Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ab9d2f0

Browse filesBrowse files
committed
Added --config-dir global flag
1 parent c86ca30 commit ab9d2f0
Copy full SHA for ab9d2f0

File tree

Expand file treeCollapse file tree

3 files changed

+33
-6
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+33
-6
lines changed

‎internal/cli/cli.go

Copy file name to clipboardExpand all lines: internal/cli/cli.go
+6-3Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,12 @@ func NewCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
181181
cmd.PersistentFlags().StringSliceVar(&additionalUrls, "additional-urls", defaultAdditionalURLs, i18n.Tr("Comma-separated list of additional URLs for the Boards Manager."))
182182
cmd.PersistentFlags().BoolVar(&noColor, "no-color", defaultOutputNoColor, "Disable colored output.")
183183

184-
// We are not using cobra to parse this flag, because we manually parse it in main.go.
185-
// Just leaving it here so cobra will not complain about it.
186-
cmd.PersistentFlags().String("config-file", "", i18n.Tr("The custom config file (if not specified the default will be used)."))
184+
// We are not using cobra to parse the following flags, because we manually parse them in main.go.
185+
// Just leaving it here so cobra will output help usage and not complain about them.
186+
cmd.PersistentFlags().String("config-file", "",
187+
i18n.Tr("The custom config file (if not specified the default will be used)."))
188+
cmd.PersistentFlags().String("config-dir", "",
189+
i18n.Tr("Sets the default data directory (Arduino CLI will look for configuration file in this directory)."))
187190
return cmd
188191
}
189192

‎internal/cli/configuration/configuration.go

Copy file name to clipboardExpand all lines: internal/cli/configuration/configuration.go
+24Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
package configuration
1717

1818
import (
19+
"fmt"
1920
"os"
2021
"path/filepath"
2122
"runtime"
2223

2324
"github.com/arduino/arduino-cli/internal/cli/feedback"
2425
"github.com/arduino/arduino-cli/internal/go-configmap"
2526
"github.com/arduino/arduino-cli/internal/i18n"
27+
"github.com/arduino/go-paths-helper"
2628
"github.com/arduino/go-win32-utils"
2729
)
2830

@@ -42,8 +44,15 @@ func NewSettings() *Settings {
4244
return res
4345
}
4446

47+
var userProvidedDefaultDataDir *string
48+
4549
// getDefaultArduinoDataDir returns the full path to the default arduino folder
4650
func getDefaultArduinoDataDir() string {
51+
// This is overridden by --config-dir flag
52+
if userProvidedDefaultDataDir != nil {
53+
return *userProvidedDefaultDataDir
54+
}
55+
4756
userHomeDir, err := os.UserHomeDir()
4857
if err != nil {
4958
feedback.Warning(i18n.Tr("Unable to get user home dir: %v", err))
@@ -96,6 +105,21 @@ func getDefaultUserDir() string {
96105
// argument '--config-file' (if specified), if empty looks for the ARDUINO_CONFIG_FILE env,
97106
// or looking in the current working dir
98107
func FindConfigFileInArgsFallbackOnEnv(args []string) string {
108+
// Look for '--config-dir' argument
109+
for i, arg := range args {
110+
if arg == "--config-dir" {
111+
if len(args) > i+1 {
112+
absArgs, err := paths.New(args[i+1]).Abs()
113+
if err != nil {
114+
feedback.FatalError(fmt.Errorf("invalid --config-dir value: %w", err), feedback.ErrBadArgument)
115+
}
116+
configDir := absArgs.String()
117+
userProvidedDefaultDataDir = &configDir
118+
break
119+
}
120+
}
121+
}
122+
99123
// Look for '--config-file' argument
100124
for i, arg := range args {
101125
if arg == "--config-file" {

‎main.go

Copy file name to clipboardExpand all lines: main.go
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ func main() {
3737
// Disable logging until it is setup in the arduino-cli pre-run
3838
logrus.SetOutput(io.Discard)
3939

40-
// Create a new ArduinoCoreServer
41-
srv := commands.NewArduinoCoreServer()
42-
4340
// Search for the configuration file in the command line arguments and in the environment
4441
configFile := configuration.FindConfigFileInArgsFallbackOnEnv(os.Args)
4542
ctx := config.SetConfigFile(context.Background(), configFile)
4643

44+
// Create a new ArduinoCoreServer
45+
srv := commands.NewArduinoCoreServer()
46+
4747
// Read the settings from the configuration file
4848
openReq := &rpc.ConfigurationOpenRequest{SettingsFormat: "yaml"}
4949
var configFileLoadingWarnings []string

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.