Skip to content
Snippets Groups Projects
Commit e2bc4d27 authored by Tamer Tas's avatar Tamer Tas
Browse files

Add varargs to delete command

parent 42585f00
No related branches found
No related tags found
No related merge requests found
......@@ -8,8 +8,8 @@ import (
cli "github.com/spf13/cobra"
"github.com/tmrts/tmplt/pkg/tmplt"
"github.com/tmrts/tmplt/pkg/util/exit"
"github.com/tmrts/tmplt/pkg/util/osutil"
"github.com/tmrts/tmplt/pkg/util/tlog"
"github.com/tmrts/tmplt/pkg/util/validate"
)
......@@ -17,26 +17,26 @@ var Delete = &cli.Command{
Use: "delete <template-name>",
Short: "Delete a project template from the template registry",
Run: func(c *cli.Command, args []string) {
MustValidateArgs(args, []validate.Argument{
{"template-path", validate.Alphanumeric},
})
templateName := args[0]
targetDir := filepath.Join(tmplt.Configuration.TemplateDirPath, templateName)
switch exists, err := osutil.DirExists(targetDir); {
case err != nil:
exit.Error(fmt.Errorf("delete: %s", err))
case !exists:
exit.Error(fmt.Errorf("Template %v doesn't exist", templateName))
MustValidateVarArgs(args, validate.Argument{"template-path", validate.Alphanumeric})
for _, templateName := range args {
targetDir := filepath.Join(tmplt.Configuration.TemplateDirPath, templateName)
switch exists, err := osutil.DirExists(targetDir); {
case err != nil:
tlog.Error(fmt.Sprintf("delete: %s", err))
continue
case !exists:
tlog.Error(fmt.Sprintf("Template %v doesn't exist", templateName))
continue
}
if err := os.RemoveAll(targetDir); err != nil {
tlog.Error(fmt.Sprintf("delete: %v", err))
continue
}
tlog.Success(fmt.Sprintf("Successfully deleted the template %v", templateName))
}
// TODO Accept globs and multiple arguments
if err := os.RemoveAll(targetDir); err != nil {
exit.Error(fmt.Errorf("delete: %v", err))
}
exit.OK("Successfully deleted the template %v", templateName)
},
}
......@@ -118,9 +118,7 @@ var Download = &cli.Command{
case err != nil:
exit.Error(fmt.Errorf("download: %s", err))
case exists:
shouldOverwrite := false //GetBoolFlag(c, "update")
if !shouldOverwrite {
if shouldOverwrite := GetBoolFlag(c, "force"); !shouldOverwrite {
exit.OK("Template %v already exists use -u to update the template", templateName)
}
case !exists:
......@@ -137,6 +135,7 @@ var Download = &cli.Command{
zipURL := host.ZipURL(templateURL)
// TODO validate template as well
if err := downloadZip(zipURL, targetDir); err != nil {
// Delete if download transaction fails
defer os.RemoveAll(targetDir)
......
......@@ -8,6 +8,12 @@ import (
"github.com/tmrts/tmplt/pkg/util/validate"
)
func MustValidateVarArgs(args []string, v validate.Argument) {
if err := util.ValidateVarArgs(args, v); err != nil {
exit.Error(err)
}
}
func MustValidateArgs(args []string, validations []validate.Argument) {
if err := util.ValidateArgs(args, validations); err != nil {
exit.Error(err)
......
......@@ -19,7 +19,7 @@ func Run() {
Save.PersistentFlags().BoolP("force", "f", false, "Overwrite existing template with the same name")
Root.AddCommand(Save)
// Update Flag
Download.PersistentFlags().BoolP("force", "f", false, "Overwrite existing template with the same name")
Root.AddCommand(Download)
Root.AddCommand(Delete)
......
......@@ -34,6 +34,20 @@ func ValidateArgCount(expectedArgNo, argNo int) error {
return nil
}
func ValidateVarArgs(args []string, v validate.Argument) error {
if len(args) == 0 {
return ErrNotEnoughArgs
}
for _, arg := range args {
if ok := v.Validate(arg); !ok {
return fmt.Errorf(InvalidArg, v.Name, arg, v.Validate.TypeName())
}
}
return nil
}
func ValidateArgs(args []string, validations []validate.Argument) error {
if err := ValidateArgCount(len(validations), len(args)); err != nil {
return err
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment