Skip to content

Commit 586f5f5

Browse files
committed
DRAFT 3
1 parent 21300db commit 586f5f5

File tree

6 files changed

+18
-57
lines changed

6 files changed

+18
-57
lines changed

commands/instances.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (s *arduinoCoreServerImpl) Init(req *rpc.InitRequest, stream rpc.ArduinoCor
177177
defaultIndexURL, _ := utils.URLParse(globals.DefaultIndexURL)
178178
allPackageIndexUrls := []*url.URL{defaultIndexURL}
179179
if profile == nil {
180-
for _, u := range s.settings.GetStringSlice("board_manager.additional_urls") {
180+
for _, u := range s.settings.BoardManagerAdditionalUrls() {
181181
URL, err := utils.URLParse(u)
182182
if err != nil {
183183
e := &cmderrors.InitFailedError{

commands/service_settings.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"reflect"
2323

2424
"github.com/arduino/arduino-cli/commands/cmderrors"
25+
"github.com/arduino/arduino-cli/internal/cli/configuration"
2526
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2627
"google.golang.org/protobuf/proto"
2728
"gopkg.in/yaml.v3"
@@ -192,16 +193,17 @@ func (s *arduinoCoreServerImpl) ConfigurationOpen(ctx context.Context, req *rpc.
192193
if err != nil {
193194
return nil, fmt.Errorf("error unmarshalling settings: %v", err)
194195
}
195-
return &rpc.ConfigurationOpenResponse{}, nil
196196
case "json":
197197
err := json.Unmarshal([]byte(req.GetEncodedSettings()), s.settings)
198198
if err != nil {
199199
return nil, fmt.Errorf("error unmarshalling settings: %v", err)
200200
}
201-
return &rpc.ConfigurationOpenResponse{}, nil
202201
default:
203202
return nil, &cmderrors.InvalidArgumentError{Message: fmt.Sprintf("unsupported format: %s", req.GetSettingsFormat())}
204203
}
204+
205+
configuration.BindEnvVars(s.settings)
206+
return &rpc.ConfigurationOpenResponse{}, nil
205207
}
206208

207209
// SettingsEnumerate returns the list of all the settings keys.

go-configmap/cli.go

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ func (c *Map) SetFromCLIArgs(key string, args ...string) error {
2323
}
2424
return nil
2525
}
26-
fmt.Println(key, args)
2726

2827
// Find the correct type for the given setting
2928
valueType, ok := c.schema[key]

internal/cli/configuration/configuration.go

-43
Original file line numberDiff line numberDiff line change
@@ -44,49 +44,6 @@ func NewSettings() *Settings {
4444
return res
4545
}
4646

47-
// // Init initialize defaults and read the configuration file.
48-
// // Please note the logging system hasn't been configured yet,
49-
// // so logging shouldn't be used here.
50-
// func Init(configFile string) *Settings {
51-
// // Create a new viper instance with default values for all the settings
52-
// settings := NewSettings()
53-
54-
// // Set config name and config path
55-
// if configFilePath := paths.New(configFile); configFilePath != nil {
56-
// settings.SetConfigName(strings.TrimSuffix(configFilePath.Base(), configFilePath.Ext()))
57-
// settings.AddConfigPath(configFilePath.Parent().String())
58-
// } else {
59-
// configDir := settings.GetString("directories.Data")
60-
// // Get default data path if none was provided
61-
// if configDir == "" {
62-
// configDir = getDefaultArduinoDataDir()
63-
// }
64-
65-
// settings.SetConfigName("arduino-cli")
66-
// settings.AddConfigPath(configDir)
67-
// }
68-
69-
// // Attempt to read config file
70-
// if err := settings.ReadInConfig(); err != nil {
71-
// // ConfigFileNotFoundError is acceptable, anything else
72-
// // should be reported to the user
73-
// if _, ok := err.(viper.ConfigFileNotFoundError); !ok {
74-
// feedback.Warning(tr("Error reading config file: %v", err))
75-
// }
76-
// }
77-
78-
// return settings
79-
// }
80-
81-
// BindFlags creates all the flags binding between the cobra Command and the instance of viper
82-
// func BindFlags(cmd *cobra.Command, settings *Settings) {
83-
// settings.BindPFlag("logging.level", cmd.Flag("log-level"))
84-
// settings.BindPFlag("logging.file", cmd.Flag("log-file"))
85-
// settings.BindPFlag("logging.format", cmd.Flag("log-format"))
86-
// settings.BindPFlag("board_manager.additional_urls", cmd.Flag("additional-urls"))
87-
// settings.BindPFlag("output.no_color", cmd.Flag("no-color"))
88-
// }
89-
9047
// getDefaultArduinoDataDir returns the full path to the default arduino folder
9148
func getDefaultArduinoDataDir() string {
9249
userHomeDir, err := os.UserHomeDir()

internal/cli/configuration/defaults.go

+8-5
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,22 @@ func SetDefaults(settings *Settings) {
6464

6565
// updater settings
6666
setDefaultValueAndKeyTypeSchema("updater.enable_notification", true)
67+
}
6768

69+
// BindEnvVars binds environment variables to the settings
70+
func BindEnvVars(settings *Settings) {
6871
// Bind env vars
69-
settings.Defaults.InjectEnvVars(os.Environ(), "ARDUINO")
72+
settings.InjectEnvVars(os.Environ(), "ARDUINO")
7073

7174
// Bind env aliases to keep backward compatibility
7275
setIfEnvExists := func(key, env string) {
7376
if v, ok := os.LookupEnv(env); ok {
74-
settings.Defaults.SetFromCLIArgs(key, v)
77+
settings.SetFromCLIArgs(key, v)
7578
}
7679
}
7780
setIfEnvExists("library.enable_unsafe_install", "ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL")
78-
setIfEnvExists("directories.User", "ARDUINO_SKETCHBOOK_DIR")
79-
setIfEnvExists("directories.Downloads", "ARDUINO_DOWNLOADS_DIR")
80-
setIfEnvExists("directories.Data", "ARDUINO_DATA_DIR")
81+
setIfEnvExists("directories.user", "ARDUINO_SKETCHBOOK_DIR")
82+
setIfEnvExists("directories.downloads", "ARDUINO_DOWNLOADS_DIR")
83+
setIfEnvExists("directories.data", "ARDUINO_DATA_DIR")
8184
setIfEnvExists("sketch.always_export_binaries", "ARDUINO_SKETCH_ALWAYS_EXPORT_BINARIES")
8285
}

main.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ func main() {
3939
ctx = context.WithValue(ctx, "config_file", configFile)
4040

4141
// Read the settings from the configuration file
42+
openReq := &rpc.ConfigurationOpenRequest{SettingsFormat: "yaml"}
4243
if configData, err := paths.New(configFile).ReadFile(); err == nil {
43-
_, err := srv.ConfigurationOpen(ctx, &rpc.ConfigurationOpenRequest{SettingsFormat: "yaml", EncodedSettings: string(configData)})
44-
if err != nil {
45-
feedback.FatalError(fmt.Errorf("couldn't load configuration: %w", err), feedback.ErrGeneric)
46-
}
44+
openReq.EncodedSettings = string(configData)
4745
} else if !os.IsNotExist(err) {
4846
feedback.FatalError(fmt.Errorf("couldn't read configuration file: %w", err), feedback.ErrGeneric)
49-
// TODO: read from default location
47+
}
48+
if _, err := srv.ConfigurationOpen(ctx, openReq); err != nil {
49+
feedback.FatalError(fmt.Errorf("couldn't load configuration: %w", err), feedback.ErrGeneric)
5050
}
5151

5252
// Get the current settings from the server

0 commit comments

Comments
 (0)