16
16
package configuration
17
17
18
18
import (
19
+ "fmt"
19
20
"os"
20
21
"path/filepath"
21
22
"runtime"
22
23
23
24
"github.com/arduino/arduino-cli/internal/cli/feedback"
24
25
"github.com/arduino/arduino-cli/internal/go-configmap"
25
26
"github.com/arduino/arduino-cli/internal/i18n"
27
+ "github.com/arduino/go-paths-helper"
26
28
"github.com/arduino/go-win32-utils"
27
29
)
28
30
@@ -42,8 +44,15 @@ func NewSettings() *Settings {
42
44
return res
43
45
}
44
46
47
+ var userProvidedDefaultDataDir * string
48
+
45
49
// getDefaultArduinoDataDir returns the full path to the default arduino folder
46
50
func getDefaultArduinoDataDir () string {
51
+ // This is overridden by --config-dir flag
52
+ if userProvidedDefaultDataDir != nil {
53
+ return * userProvidedDefaultDataDir
54
+ }
55
+
47
56
userHomeDir , err := os .UserHomeDir ()
48
57
if err != nil {
49
58
feedback .Warning (i18n .Tr ("Unable to get user home dir: %v" , err ))
@@ -96,6 +105,21 @@ func getDefaultUserDir() string {
96
105
// argument '--config-file' (if specified), if empty looks for the ARDUINO_CONFIG_FILE env,
97
106
// or looking in the current working dir
98
107
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
+
99
123
// Look for '--config-file' argument
100
124
for i , arg := range args {
101
125
if arg == "--config-file" {
0 commit comments