From dfc91a86a1cf15171d4ba9a40db10f4b02c31569 Mon Sep 17 00:00:00 2001 From: Roxie Gibson Date: Thu, 22 Jul 2021 17:38:44 +0100 Subject: [PATCH] feat: WIP server rm command --- cli/server.go | 9 ++++++++- client/context.go | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/cli/server.go b/cli/server.go index 2e2235ab..b7ac90e1 100644 --- a/cli/server.go +++ b/cli/server.go @@ -82,9 +82,16 @@ var serverNewCommand = &cli.Command{ var serverRemoveCommand = &cli.Command{ Name: "remove", - Aliases: []string{"rm"}, + Aliases: []string{"rm", "delete"}, Usage: "Remove server ", HideHelp: true, + Action: func(c *cli.Context) error { + server := c.Args().First() + if err := client.DeleteContext(server); err != nil { + logrus.Fatal(err) + } + return nil + }, } var serverInitCommand = &cli.Command{ diff --git a/client/context.go b/client/context.go index e37d4468..cebd3732 100644 --- a/client/context.go +++ b/client/context.go @@ -57,6 +57,25 @@ func createContext(name string, host string) error { return nil } +func DeleteContext(name string) error { + if name == "default" { + return errors.New("context 'default' cannot be removed") + } + if _, err := GetContext(name); err != nil { + return err + } + + // remove any context that might be loaded + // TODO: Check if the context we are removing is the active one rather than doing it all the time + cfg := dConfig.LoadDefaultConfigFile(nil) + cfg.CurrentContext = "" + if err := cfg.Save(); err != nil { + return err + } + + return NewDefaultDockerContextStore().Remove(name) +} + func GetContext(contextName string) (contextStore.Metadata, error) { ctx, err := NewDefaultDockerContextStore().GetMetadata(contextName) if err != nil {