summaryrefslogtreecommitdiff
path: root/cmd/aocli/gen.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/aocli/gen.go')
-rw-r--r--cmd/aocli/gen.go23
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
+}