func newDeleteCmd()

in pkg/cmd/serviceaccount/delete.go [28:65]


func newDeleteCmd(authProvider auth.Provider) *cobra.Command {
	deleteRunner := workflow.NewPhaseRunner()
	data := &deleteData{
		authProvider: authProvider,
	}

	cmd := &cobra.Command{
		Use: "delete",
		RunE: func(cmd *cobra.Command, args []string) error {
			// if we are running the AAD application delete phase, we can
			// slightly optimize the delete command by skipping the federated-identity
			// phase because it will get removed when the AAD application is removed.
			if deleteRunner.IsPhaseActive(aadApplicationPhase) {
				deleteRunner.AppendSkipPhases(federatedIdentityPhase)
			}
			return deleteRunner.Run(data)
		},
	}

	f := cmd.Flags()
	f.StringVar(&data.serviceAccountName, options.ServiceAccountName.Flag, "", options.ServiceAccountName.Description)
	f.StringVar(&data.serviceAccountNamespace, options.ServiceAccountNamespace.Flag, "default", options.ServiceAccountNamespace.Description)
	f.StringVar(&data.serviceAccountIssuerURL, options.ServiceAccountIssuerURL.Flag, "", options.ServiceAccountIssuerURL.Description)
	f.StringVar(&data.aadApplicationName, options.AADApplicationName.Flag, "", options.AADApplicationName.Description)
	f.StringVar(&data.aadApplicationObjectID, options.AADApplicationObjectID.Flag, "", options.AADApplicationObjectID.Description)
	f.StringVar(&data.roleAssignmentID, options.RoleAssignmentID.Flag, "", options.RoleAssignmentID.Description)

	// append phases in order
	deleteRunner.AppendPhases(
		roleAssignmentPhase,
		federatedIdentityPhase,
		serviceAccountPhase,
		aadApplicationPhase,
	)
	deleteRunner.BindToCommand(cmd, data)

	return cmd
}