From 79f2e138b020b340de017d005711d14af097eb28 Mon Sep 17 00:00:00 2001 From: Gulshan Singh Date: Sun, 8 Oct 2023 12:20:53 +0000 Subject: [PATCH 1/4] Add directories.template config option --- configuration/defaults.go | 1 + internal/cli/config/validate.go | 1 + 2 files changed, 2 insertions(+) diff --git a/configuration/defaults.go b/configuration/defaults.go index be1a0088a62..2363e4a6df2 100644 --- a/configuration/defaults.go +++ b/configuration/defaults.go @@ -38,6 +38,7 @@ func SetDefaults(settings *viper.Viper) { // arduino directories settings.SetDefault("directories.Data", getDefaultArduinoDataDir()) settings.SetDefault("directories.Downloads", filepath.Join(getDefaultArduinoDataDir(), "staging")) + settings.SetDefault("directories.Template", "") settings.SetDefault("directories.User", getDefaultUserDir()) // Sketch compilation diff --git a/internal/cli/config/validate.go b/internal/cli/config/validate.go index f494bfaac0b..41de03bba1f 100644 --- a/internal/cli/config/validate.go +++ b/internal/cli/config/validate.go @@ -27,6 +27,7 @@ var validMap = map[string]reflect.Kind{ "daemon.port": reflect.String, "directories.data": reflect.String, "directories.downloads": reflect.String, + "directories.template": reflect.String, "directories.user": reflect.String, "directories.builtin.tools": reflect.String, "directories.builtin.libraries": reflect.String, From 78a742a0e5fd2f1600880558ffbbbe01a63dc746 Mon Sep 17 00:00:00 2001 From: Gulshan Singh Date: Sun, 8 Oct 2023 12:22:30 +0000 Subject: [PATCH 2/4] Create sketch from template if template directory is set --- commands/sketch/new.go | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/commands/sketch/new.go b/commands/sketch/new.go index b4fe3ab0e82..ce3273644dc 100644 --- a/commands/sketch/new.go +++ b/commands/sketch/new.go @@ -55,19 +55,32 @@ func NewSketch(ctx context.Context, req *rpc.NewSketchRequest) (*rpc.NewSketchRe return nil, err } + templateDir := configuration.Settings.GetString("directories.template") sketchDirPath := paths.New(sketchesDir).Join(req.SketchName) - if err := sketchDirPath.MkdirAll(); err != nil { - return nil, &arduino.CantCreateSketchError{Cause: err} - } - sketchName := sketchDirPath.Base() - sketchMainFilePath := sketchDirPath.Join(sketchName + globals.MainFileValidExtension) - if !req.Overwrite { - if sketchMainFilePath.Exist() { - return nil, &arduino.CantCreateSketchError{Cause: errors.New(tr(".ino file already exists"))} + + var sketchMainFilePath *paths.Path + if templateDir != "" { + templateDirPath := paths.New(templateDir) + if err := templateDirPath.CopyDirTo(sketchDirPath); err != nil { + return nil, &arduino.CantCreateSketchError{Cause: err} + } + // TODO: Make this customizable? + sketchMainFilePath = sketchDirPath.Join("main.ino") + } else { + if err := sketchDirPath.MkdirAll(); err != nil { + return nil, &arduino.CantCreateSketchError{Cause: err} + } + sketchName := sketchDirPath.Base() + sketchMainFilePath = sketchDirPath.Join(sketchName + globals.MainFileValidExtension) + if !req.Overwrite { + if sketchMainFilePath.Exist() { + return nil, &arduino.CantCreateSketchError{Cause: errors.New(tr(".ino file already exists"))} + } + } + + if err := sketchMainFilePath.WriteFile(emptySketch); err != nil { + return nil, &arduino.CantCreateSketchError{Cause: err} } - } - if err := sketchMainFilePath.WriteFile(emptySketch); err != nil { - return nil, &arduino.CantCreateSketchError{Cause: err} } return &rpc.NewSketchResponse{MainFile: sketchMainFilePath.String()}, nil From ff796f3caa1c9632e879d78247904c5cbab0308e Mon Sep 17 00:00:00 2001 From: Gulshan Singh Date: Thu, 19 Oct 2023 10:46:00 +0000 Subject: [PATCH 3/4] Change directories.template to sketch.template --- commands/sketch/new.go | 10 +++------- configuration/defaults.go | 3 ++- internal/cli/config/validate.go | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/commands/sketch/new.go b/commands/sketch/new.go index ce3273644dc..1e318d85039 100644 --- a/commands/sketch/new.go +++ b/commands/sketch/new.go @@ -55,29 +55,25 @@ func NewSketch(ctx context.Context, req *rpc.NewSketchRequest) (*rpc.NewSketchRe return nil, err } - templateDir := configuration.Settings.GetString("directories.template") + templateDir := configuration.Settings.GetString("sketch.template") sketchDirPath := paths.New(sketchesDir).Join(req.SketchName) + sketchName := sketchDirPath.Base() + sketchMainFilePath := sketchDirPath.Join(sketchName + globals.MainFileValidExtension) - var sketchMainFilePath *paths.Path if templateDir != "" { templateDirPath := paths.New(templateDir) if err := templateDirPath.CopyDirTo(sketchDirPath); err != nil { return nil, &arduino.CantCreateSketchError{Cause: err} } - // TODO: Make this customizable? - sketchMainFilePath = sketchDirPath.Join("main.ino") } else { if err := sketchDirPath.MkdirAll(); err != nil { return nil, &arduino.CantCreateSketchError{Cause: err} } - sketchName := sketchDirPath.Base() - sketchMainFilePath = sketchDirPath.Join(sketchName + globals.MainFileValidExtension) if !req.Overwrite { if sketchMainFilePath.Exist() { return nil, &arduino.CantCreateSketchError{Cause: errors.New(tr(".ino file already exists"))} } } - if err := sketchMainFilePath.WriteFile(emptySketch); err != nil { return nil, &arduino.CantCreateSketchError{Cause: err} } diff --git a/configuration/defaults.go b/configuration/defaults.go index 2363e4a6df2..bc9a8f5b331 100644 --- a/configuration/defaults.go +++ b/configuration/defaults.go @@ -38,7 +38,6 @@ func SetDefaults(settings *viper.Viper) { // arduino directories settings.SetDefault("directories.Data", getDefaultArduinoDataDir()) settings.SetDefault("directories.Downloads", filepath.Join(getDefaultArduinoDataDir(), "staging")) - settings.SetDefault("directories.Template", "") settings.SetDefault("directories.User", getDefaultUserDir()) // Sketch compilation @@ -70,4 +69,6 @@ func SetDefaults(settings *viper.Viper) { settings.BindEnv("directories.Downloads", "ARDUINO_DOWNLOADS_DIR") settings.BindEnv("directories.Data", "ARDUINO_DATA_DIR") settings.BindEnv("sketch.always_export_binaries", "ARDUINO_SKETCH_ALWAYS_EXPORT_BINARIES") + + settings.SetDefault("sketch.template", "") } diff --git a/internal/cli/config/validate.go b/internal/cli/config/validate.go index 41de03bba1f..c16e4a4be59 100644 --- a/internal/cli/config/validate.go +++ b/internal/cli/config/validate.go @@ -27,7 +27,6 @@ var validMap = map[string]reflect.Kind{ "daemon.port": reflect.String, "directories.data": reflect.String, "directories.downloads": reflect.String, - "directories.template": reflect.String, "directories.user": reflect.String, "directories.builtin.tools": reflect.String, "directories.builtin.libraries": reflect.String, @@ -37,6 +36,7 @@ var validMap = map[string]reflect.Kind{ "logging.format": reflect.String, "logging.level": reflect.String, "sketch.always_export_binaries": reflect.Bool, + "sketch.template": reflect.String, "metrics.addr": reflect.String, "metrics.enabled": reflect.Bool, "network.proxy": reflect.String, From de7c948f5471618ebcf277807c39d62411b5f49b Mon Sep 17 00:00:00 2001 From: Gulshan Singh Date: Thu, 19 Oct 2023 11:05:41 +0000 Subject: [PATCH 4/4] Rename main template ino file --- commands/sketch/new.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/commands/sketch/new.go b/commands/sketch/new.go index 1e318d85039..e91444e2e59 100644 --- a/commands/sketch/new.go +++ b/commands/sketch/new.go @@ -65,6 +65,11 @@ func NewSketch(ctx context.Context, req *rpc.NewSketchRequest) (*rpc.NewSketchRe if err := templateDirPath.CopyDirTo(sketchDirPath); err != nil { return nil, &arduino.CantCreateSketchError{Cause: err} } + + oldMainFilePath := sketchDirPath.Join(templateDirPath.Base() + globals.MainFileValidExtension) + if err := oldMainFilePath.Rename(sketchMainFilePath); err != nil { + return nil, &arduino.CantCreateSketchError{Cause: err} + } } else { if err := sketchDirPath.MkdirAll(); err != nil { return nil, &arduino.CantCreateSketchError{Cause: err} pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy