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" "coopcloud.tech/abra/pkg/log" "github.com/spf13/cobra" ) var ServerRemoveCommand = &cobra.Command{ Use: "remove [flags]", Aliases: []string{"rm"}, Short: "Remove a managed server", Long: `Remove a managed server. Abra will remove the internal bookkeeping ($ABRA_DIR/servers/...) and underlying client connection context. This server will then be lost in time, like tears in rain.`, Args: cobra.ExactArgs(1), ValidArgsFunction: func( cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { return autocomplete.ServerNameComplete() }, Run: func(cmd *cobra.Command, args []string) { serverName := internal.ValidateServer(args) if err := client.DeleteContext(serverName); err != nil { log.Fatal(err) } if err := os.RemoveAll(filepath.Join(config.SERVERS_DIR, serverName)); err != nil { log.Fatal(err) } log.Infof("%s is now lost in time, like tears in rain", serverName) return }, }