mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-13 09:32:24 -06:00
f9d937a4dd
It displays a run header with link to web UI, like starting a new plan does, then confirms the run and streams the apply logs. If you can't apply the run (it's from a different workspace, is in an unconfirmable state, etc. etc.), it displays an error instead. Notable points along the way: * Implement `WrappedPlanFile` sum type, and update planfile consumers to use it instead of a plain `planfile.Reader`. * Enable applying a saved cloud plan * Update TFC mocks — add org name to workspace, and minimal support for includes on MockRuns.ReadWithOptions.
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package command
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
|
|
"github.com/hashicorp/terraform/internal/plans/planfile"
|
|
)
|
|
|
|
// NOTE: Temporary file until this branch is cleaned up.
|
|
|
|
// Input returns whether or not input asking is enabled.
|
|
func (m *Meta) Input() bool {
|
|
if test || !m.input {
|
|
return false
|
|
}
|
|
|
|
if envVar := os.Getenv(InputModeEnvVar); envVar != "" {
|
|
if v, err := strconv.ParseBool(envVar); err == nil && !v {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// PlanFile loads the plan file at the given path, which might be either a local
|
|
// or cloud plan.
|
|
//
|
|
// If the return value and error are both nil, the given path exists but seems
|
|
// to be a configuration directory instead.
|
|
//
|
|
// Error will be non-nil if path refers to something which looks like a plan
|
|
// file and loading the file fails.
|
|
func (m *Meta) PlanFile(path string) (*planfile.WrappedPlanFile, error) {
|
|
fi, err := os.Stat(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if fi.IsDir() {
|
|
// Looks like a configuration directory.
|
|
return nil, nil
|
|
}
|
|
|
|
return planfile.OpenWrapped(path)
|
|
}
|