diff --git a/internal/cli/sketch/new.go b/internal/cli/sketch/new.go index 3b361f3d8ea..293293b75ec 100644 --- a/internal/cli/sketch/new.go +++ b/internal/cli/sketch/new.go @@ -19,7 +19,8 @@ import ( "context" "os" "strings" - + "regexp" + "fmt" "github.com/arduino/arduino-cli/arduino/globals" sk "github.com/arduino/arduino-cli/commands/sketch" "github.com/arduino/arduino-cli/internal/cli/feedback" @@ -38,7 +39,14 @@ func initNewCommand() *cobra.Command { Long: tr("Create a new Sketch"), Example: " " + os.Args[0] + " sketch new MultiBlinker", Args: cobra.ExactArgs(1), - Run: func(cmd *cobra.Command, args []string) { runNewCommand(args, overwrite) }, + Run: func(cmd *cobra.Command, args []string) { + re := regexp.MustCompile("^/[0-9a-zA-Z][0-9a-zA-Z_.-]{0,62}$") + if !re.MatchString(args[0]) { + fmt.Println("Sketch names must start with a letter or number, followed by letters, numbers, dashes, dots and underscores. Maximum length is 63 characters.") + return + } + runNewCommand(args, overwrite) + }, } newCommand.Flags().BoolVarP(&overwrite, "overwrite", "f", false, tr("Overwrites an existing .ino sketch."))