package server import ( "os" "path/filepath" "coopcloud.tech/abra/cli/internal" "coopcloud.tech/abra/pkg/autocomplete" "coopcloud.tech/abra/pkg/client" "coopcloud.tech/abra/pkg/config" "github.com/sirupsen/logrus" "github.com/urfave/cli" ) var serverRemoveCommand = cli.Command{ Name: "remove", Aliases: []string{"rm"}, ArgsUsage: "", Usage: "Remove a managed server", Description: `Remove a managed server. Abra will remove the internal bookkeeping (~/.abra/servers/...) and underlying client connection context. This server will then be lost in time, like tears in rain. `, Flags: []cli.Flag{ internal.DebugFlag, internal.NoInputFlag, internal.OfflineFlag, }, Before: internal.SubCommandBefore, BashComplete: autocomplete.ServerNameComplete, Action: func(c *cli.Context) error { serverName := internal.ValidateServer(c) if err := client.DeleteContext(serverName); err != nil { logrus.Fatal(err) } if err := os.RemoveAll(filepath.Join(config.SERVERS_DIR, serverName)); err != nil { logrus.Fatal(err) } logrus.Infof("server at %s has been lost in time, like tears in rain", serverName) return nil }, }