package cmd
import (
"io"
"github.com/spf13/cobra"
"github.com/vmware/dispatch/pkg/api/v1"
"github.com/vmware/dispatch/pkg/dispatchcli/i18n"
)
var (
deleteLong = `Delete one or many resources.` + validResources
deleteExample = i18n.T(`
# Delete a single image with name "demo-python3-runtime"
vs delete image demo-python3-runtime
# Delete a single function with name "open-sesame"
vs delete function open-sesame`)
)
func NewCmdDelete(out io.Writer, errOut io.Writer) *cobra.Command {
cmd := &cobra.Command{
Use: "delete TYPE [NAME|ID] [flags]",
Short: i18n.T("Delete one or many resources"),
Long: deleteLong,
Example: deleteExample,
Run: func(cmd *cobra.Command, args []string) {
if file == "" {
runHelp(cmd, args)
return
}
fnClient := functionsClient()
imgClient := imagesClient()
baseImgClient := baseImagesClient()
eventClient := eventManagerClient()
endptClient := endpointsClient()
secClient := secretsClient()
iamClient := identityManagerClient()
deleteMap := map[string]ModelAction{
v1.ImageKind: CallDeleteImage(imgClient),
v1.BaseImageKind: CallDeleteBaseImage(baseImgClient),
v1.FunctionKind: CallDeleteFunction(fnClient),
v1.SecretKind: CallDeleteSecret(secClient),
v1.PolicyKind: CallDeletePolicy(iamClient),
v1.ServiceAccountKind: CallDeleteServiceAccount(iamClient),
v1.DriverTypeKind: CallDeleteEventDriverType(eventClient),
v1.DriverKind: CallDeleteEventDriver(eventClient),
v1.SubscriptionKind: CallDeleteSubscription(eventClient),
v1.EndpointKind: CallDeleteEndpoint(endptClient),
}
err := importFile(out, errOut, cmd, args, deleteMap, "Deleted")
CheckErr(err)
},
SuggestFor: []string{"list"},
}
cmd.AddCommand(NewCmdDeleteBaseImage(out, errOut))
cmd.AddCommand(NewCmdDeleteImage(out, errOut))
cmd.AddCommand(NewCmdDeleteFunction(out, errOut))
cmd.AddCommand(NewCmdDeleteSecret(out, errOut))
cmd.AddCommand(NewCmdDeleteEndpoint(out, errOut))
cmd.AddCommand(NewCmdDeleteSubscription(out, errOut))
cmd.AddCommand(NewCmdDeleteEventDriver(out, errOut))
cmd.AddCommand(NewCmdDeleteEventDriverType(out, errOut))
cmd.Flags().StringVarP(&file, "file", "f", "", "Path to YAML file")
cmd.Flags().StringVarP(&workDir, "work-dir", "w", "", "Working directory relative paths are based on")
return cmd
}