diff options
Diffstat (limited to 'cmd/aocli/gen.go')
| -rw-r--r-- | cmd/aocli/gen.go | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/cmd/aocli/gen.go b/cmd/aocli/gen.go index 7320894..463e3b7 100644 --- a/cmd/aocli/gen.go +++ b/cmd/aocli/gen.go @@ -2,6 +2,8 @@ package main import ( "fmt" + "io/fs" + "os" "strconv" "strings" @@ -15,16 +17,17 @@ var genCmd = &cobra.Command{ Use: "gen", Short: "Generate a new boilerplate entrypoint for a day of Advent of Code", RunE: func(cmd *cobra.Command, args []string) error { - year, day := "", "" - if len(args) == 1 { + year, day, packageName := "", "", "" + if len(args) == 2 { parts := strings.SplitN(args[0], "/", 2) if len(parts) == 2 { year = parts[0] day = parts[1] } } else { - return fmt.Errorf("Expected one argument in format %q", "<year>/<day>") + return fmt.Errorf("Expected two argument in format %q %q", "<year>/<day>", "<packageName>") } + packageName = fmt.Sprintf("%s", args[1]) if year == "" || day == "" { return fmt.Errorf("Expected one argument in format %q", "<year>/<day>") @@ -45,7 +48,19 @@ var genCmd = &cobra.Command{ } dayStr := fmt.Sprintf("%02d", dayInt) - fmt.Println(dayStr) + + fmt.Println(dayStr, packageName) + if err := ensureDir(fmt.Sprintf("%s/%s", year, dayStr)); err != nil { + return fmt.Errorf("Couldn't create directory %s/%s: %v", year, dayStr, err) + } return nil }, } + +func ensureDir(relativePath string) error { + _, err := os.Stat(relativePath) + if os.IsNotExist(err) { + return os.MkdirAll(relativePath, fs.ModePerm) + } + return nil +} |
