package spec import ( "os" agentFlag "forge.cadoles.com/Cadoles/emissary/internal/command/client/agent/flag" "forge.cadoles.com/Cadoles/emissary/internal/command/client/apierr" clientFlag "forge.cadoles.com/Cadoles/emissary/internal/command/client/flag" "forge.cadoles.com/Cadoles/emissary/pkg/client" "github.com/pkg/errors" "github.com/urfave/cli/v2" "gitlab.com/wpetit/goweb/cli/format" ) func DeleteCommand() *cli.Command { return &cli.Command{ Name: "delete", Usage: "Delete spec", Flags: agentFlag.WithAgentFlags( &cli.StringFlag{ Name: "spec-name", Usage: "use `NAME` as specification's name", }, &cli.StringFlag{ Name: "spec-version", Usage: "use `VERSION` as specification's version", Value: "0.0.0", }, ), Action: func(ctx *cli.Context) error { baseFlags := clientFlag.GetBaseFlags(ctx) token, err := clientFlag.GetToken(baseFlags) if err != nil { return errors.WithStack(apierr.Wrap(err)) } agentID, err := agentFlag.AssertAgentID(ctx) if err != nil { return errors.WithStack(err) } specDefName, err := assertSpecDefName(ctx) if err != nil { return errors.WithStack(err) } specDefVersion, err := assertSpecDefVersion(ctx) if err != nil { return errors.WithStack(err) } client := client.New(baseFlags.ServerURL, client.WithToken(token)) specDefName, specDefVersion, err = client.DeleteAgentSpec(ctx.Context, agentID, specDefName, specDefVersion) if err != nil { return errors.WithStack(apierr.Wrap(err)) } hints := format.Hints{ OutputMode: baseFlags.OutputMode, } if err := format.Write(baseFlags.Format, os.Stdout, hints, struct { Name string `json:"name"` Version string `json:"version"` }{ Name: specDefName, Version: specDefVersion, }); err != nil { return errors.WithStack(err) } return nil }, } }