3d74eac67d
This change eliminates the need to constantly type in the environment name when performing major commands like configuration, planning, and deployment. It's probably due to my age, however, I keep fat-fingering simple commands in front of investors and I am embarrassed! In the new model, there is a notion of a "current environment", and I have modeled it kinda sorta just like Git's notion of "current branch." By default, the current environment is set when you `init` something. Otherwise, there is the `coco env select <env>` command to change it. (Running this command w/out a new <env> will show you the current one.) The major commands `config`, `plan`, `deploy`, and `destroy` will prefer to use the current environment, unless it is overridden by using the --env flag. All of the `coco env <cmd> <env>` commands still require the explicit passing of an environment which seems reasonable since they are, after all, about manipulating environments. As part of this, I've overhauled the aging workspace settings cruft, which had fallen into disrepair since the initial prototype.
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
// Copyright 2017 Pulumi, Inc. All rights reserved.
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/pulumi/coconut/pkg/tokens"
|
|
)
|
|
|
|
func newDestroyCmd() *cobra.Command {
|
|
var dryRun bool
|
|
var env string
|
|
var summary bool
|
|
var yes bool
|
|
var cmd = &cobra.Command{
|
|
Use: "destroy",
|
|
Short: "Destroy an existing environment and its resources",
|
|
Long: "Destroy an existing environment and its resources\n" +
|
|
"\n" +
|
|
"This command deletes an entire existing environment by name. The current state is\n" +
|
|
"loaded from the associated snapshot file in the workspace. After running to completion,\n" +
|
|
"all of this environment's resources and associated state will be gone.\n" +
|
|
"\n" +
|
|
"Warning: although old snapshots can be used to recreate an environment, this command\n" +
|
|
"is generally irreversable and should be used with great care.",
|
|
Run: runFunc(func(cmd *cobra.Command, args []string) error {
|
|
info, err := initEnvCmdName(tokens.QName(env), args)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer info.Close()
|
|
if dryRun || yes ||
|
|
confirmPrompt("This will permanently destroy all resources in the '%v' environment!", info.Env.Name) {
|
|
apply(cmd, info, applyOptions{
|
|
Delete: true,
|
|
DryRun: dryRun,
|
|
Summary: summary,
|
|
})
|
|
}
|
|
return nil
|
|
}),
|
|
}
|
|
|
|
cmd.PersistentFlags().BoolVarP(
|
|
&dryRun, "dry-run", "n", false,
|
|
"Don't actually delete resources; just print out the planned deletions")
|
|
cmd.PersistentFlags().StringVarP(
|
|
&env, "env", "e", "",
|
|
"Choose an environment other than the currently selected one")
|
|
cmd.PersistentFlags().BoolVarP(
|
|
&summary, "summary", "s", false,
|
|
"Only display summarization of resources and plan operations")
|
|
cmd.PersistentFlags().BoolVar(
|
|
&yes, "yes", false,
|
|
"Skip confirmation prompts, and proceed with the destruction anyway")
|
|
|
|
return cmd
|
|
}
|