// Copyright 2016-2018, Pulumi Corporation. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package state import ( "context" "github.com/pulumi/pulumi/pkg/v3/backend" "github.com/pulumi/pulumi/sdk/v3/go/common/workspace" ) // CurrentStack reads the current stack and returns an instance connected to its backend provider. func CurrentStack(ctx context.Context, backend backend.Backend) (backend.Stack, error) { w, err := workspace.New() if err != nil { return nil, err } stackName := w.Settings().Stack if stackName == "" { return nil, nil } ref, err := backend.ParseStackReference(stackName) if err != nil { return nil, err } return backend.GetStack(ctx, ref) } // SetCurrentStack changes the current stack to the given stack name. func SetCurrentStack(name string) error { // Switch the current workspace to that stack. w, err := workspace.New() if err != nil { return err } w.Settings().Stack = name return w.Save() }