opentofu/internal/command/command.go

74 lines
2.4 KiB
Go
Raw Permalink Normal View History

// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
2014-07-01 13:02:13 -04:00
package command
import (
"fmt"
2017-01-18 23:50:45 -05:00
"os"
"runtime"
2014-07-01 13:02:13 -04:00
)
2014-09-29 14:24:16 -04:00
// Set to true when we're testing
var test bool = false
// PluginPathFile is the name of the file in the data dir which stores the list
// of directories supplied by the user with the `-plugin-dir` flag during init.
const PluginPathFile = "plugin_path"
// pluginMachineName is the directory name used in new plugin paths.
const pluginMachineName = runtime.GOOS + "_" + runtime.GOARCH
// DefaultPluginVendorDir is the location in the config directory to look for
// user-added plugin binaries. OpenTofu only reads from this path if it
// exists, it is never created by tofu.
const DefaultPluginVendorDir = "terraform.d/plugins/" + pluginMachineName
// DefaultVarsExtension is the default file extension used for vars
const DefaultVarsExtension = ".tfvars"
// DefaultVarsFilename is the default filename used for vars
const DefaultVarsFilename = "terraform" + DefaultVarsExtension
2015-09-11 14:56:20 -04:00
// DefaultBackupExtension is added to the state file to form the path
const DefaultBackupExtension = ".backup"
2014-07-27 18:09:04 -04:00
// DefaultParallelism is the limit Terraform places on total parallel
// operations as it walks the dependency graph.
const DefaultParallelism = 10
2017-01-18 23:50:45 -05:00
// ErrUnsupportedLocalOp is the common error message shown for operations
// that require a backend.Local.
const ErrUnsupportedLocalOp = `The configured backend doesn't support this operation.
The "backend" in OpenTofu defines how OpenTofu operates. The default
2017-01-18 23:50:45 -05:00
backend performs all operations locally on your machine. Your configuration
is configured to use a non-local backend. This backend doesn't support this
operation.
`
// modulePath returns the path to the root module and validates CLI arguments.
2017-01-18 23:50:45 -05:00
//
// This centralizes the logic for any commands that previously accepted
// a module path via CLI arguments. This will error if any extraneous arguments
// are given and suggest using the -chdir flag instead.
2017-01-18 23:50:45 -05:00
//
// If your command accepts more than one arg, then change the slice bounds
// to pass validation.
func modulePath(args []string) (string, error) {
2017-01-18 23:50:45 -05:00
// TODO: test
if len(args) > 0 {
return "", fmt.Errorf("Too many command line arguments. Did you mean to use -chdir?")
2017-01-18 23:50:45 -05:00
}
path, err := os.Getwd()
if err != nil {
return "", fmt.Errorf("Error getting pwd: %w", err)
2017-01-18 23:50:45 -05:00
}
return path, nil
2017-01-18 23:50:45 -05:00
}