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

Sign up
Appearance settings

Commit e7ba99f

Browse files
authored
[breaking] fix: remove tree config lookup (#2085)
1 parent 5e251e8 commit e7ba99f

File tree

10 files changed

+117
-178
lines changed

10 files changed

+117
-178
lines changed

‎configuration/configuration.go‎

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ func GetDefaultBuiltinLibrariesDir() string {
136136
return filepath.Join(getDefaultArduinoDataDir(), "libraries")
137137
}
138138

139-
// FindConfigFileInArgsOrWorkingDirectory returns the config file path using the
139+
// FindConfigFileInArgs returns the config file path using the
140140
// argument '--config-file' (if specified) or looking in the current working dir
141-
func FindConfigFileInArgsOrWorkingDirectory(args []string) string {
141+
func FindConfigFileInArgs(args []string) string {
142142
// Look for '--config-file' argument
143143
for i, arg := range args {
144144
if arg == "--config-file" {
@@ -147,23 +147,5 @@ func FindConfigFileInArgsOrWorkingDirectory(args []string) string {
147147
}
148148
}
149149
}
150-
151-
// Look into current working directory
152-
if cwd, err := paths.Getwd(); err != nil {
153-
return ""
154-
} else if configFile := searchConfigTree(cwd); configFile != nil {
155-
return configFile.Join("arduino-cli.yaml").String()
156-
}
157150
return ""
158151
}
159-
160-
func searchConfigTree(cwd *paths.Path) *paths.Path {
161-
// go back up to root and search for the config file
162-
for _, path := range cwd.Parents() {
163-
if path.Join("arduino-cli.yaml").Exist() {
164-
return path
165-
}
166-
}
167-
168-
return nil
169-
}

‎configuration/configuration_test.go‎

Lines changed: 4 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"path/filepath"
2222
"testing"
2323

24-
paths "github.com/arduino/go-paths-helper"
2524
"github.com/stretchr/testify/require"
2625
)
2726

@@ -39,45 +38,6 @@ func tmpDirOrDie() string {
3938
return dir
4039
}
4140

42-
func TestSearchConfigTreeNotFound(t *testing.T) {
43-
tmp := tmpDirOrDie()
44-
require.Empty(t, searchConfigTree(paths.New(tmp)))
45-
}
46-
47-
func TestSearchConfigTreeSameFolder(t *testing.T) {
48-
tmp := tmpDirOrDie()
49-
defer os.RemoveAll(tmp)
50-
_, err := os.Create(filepath.Join(tmp, "arduino-cli.yaml"))
51-
require.Nil(t, err)
52-
require.Equal(t, tmp, searchConfigTree(paths.New(tmp)).String())
53-
}
54-
55-
func TestSearchConfigTreeInParent(t *testing.T) {
56-
tmp := tmpDirOrDie()
57-
defer os.RemoveAll(tmp)
58-
target := filepath.Join(tmp, "foo", "bar")
59-
err := os.MkdirAll(target, os.ModePerm)
60-
require.Nil(t, err)
61-
_, err = os.Create(filepath.Join(tmp, "arduino-cli.yaml"))
62-
require.Nil(t, err)
63-
require.Equal(t, tmp, searchConfigTree(paths.New(target)).String())
64-
}
65-
66-
var result *paths.Path
67-
68-
func BenchmarkSearchConfigTree(b *testing.B) {
69-
tmp := tmpDirOrDie()
70-
defer os.RemoveAll(tmp)
71-
target := filepath.Join(tmp, "foo", "bar", "baz")
72-
os.MkdirAll(target, os.ModePerm)
73-
74-
var s *paths.Path
75-
for n := 0; n < b.N; n++ {
76-
s = searchConfigTree(paths.New(target))
77-
}
78-
result = s
79-
}
80-
8141
func TestInit(t *testing.T) {
8242
tmp := tmpDirOrDie()
8343
defer os.RemoveAll(tmp)
@@ -100,38 +60,15 @@ func TestInit(t *testing.T) {
10060
}
10161

10262
func TestFindConfigFile(t *testing.T) {
103-
configFile := FindConfigFileInArgsOrWorkingDirectory([]string{"--config-file"})
63+
configFile := FindConfigFileInArgs([]string{"--config-file"})
10464
require.Equal(t, "", configFile)
10565

106-
configFile = FindConfigFileInArgsOrWorkingDirectory([]string{"--config-file", "some/path/to/config"})
66+
configFile = FindConfigFileInArgs([]string{"--config-file", "some/path/to/config"})
10767
require.Equal(t, "some/path/to/config", configFile)
10868

109-
configFile = FindConfigFileInArgsOrWorkingDirectory([]string{"--config-file", "some/path/to/config/arduino-cli.yaml"})
69+
configFile = FindConfigFileInArgs([]string{"--config-file", "some/path/to/config/arduino-cli.yaml"})
11070
require.Equal(t, "some/path/to/config/arduino-cli.yaml", configFile)
11171

112-
configFile = FindConfigFileInArgsOrWorkingDirectory([]string{})
72+
configFile = FindConfigFileInArgs([]string{})
11373
require.Equal(t, "", configFile)
114-
115-
// Create temporary directories
116-
tmp := tmpDirOrDie()
117-
defer os.RemoveAll(tmp)
118-
target := filepath.Join(tmp, "foo", "bar", "baz")
119-
os.MkdirAll(target, os.ModePerm)
120-
require.Nil(t, os.Chdir(target))
121-
122-
// Create a config file
123-
f, err := os.Create(filepath.Join(target, "..", "..", "arduino-cli.yaml"))
124-
require.Nil(t, err)
125-
f.Close()
126-
127-
configFile = FindConfigFileInArgsOrWorkingDirectory([]string{})
128-
require.Equal(t, filepath.Join(tmp, "foo", "arduino-cli.yaml"), configFile)
129-
130-
// Create another config file
131-
f, err = os.Create(filepath.Join(target, "arduino-cli.yaml"))
132-
require.Nil(t, err)
133-
f.Close()
134-
135-
configFile = FindConfigFileInArgsOrWorkingDirectory([]string{})
136-
require.Equal(t, filepath.Join(target, "arduino-cli.yaml"), configFile)
13774
}

‎docs/UPGRADING.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
Here you can find a list of migration guides to handle breaking changes between releases of the CLI.
44

5+
## 0.32.0
6+
7+
Configuration file lookup in current working directory and its parents is dropped. The command line flag `--config-file`
8+
must be specified to use an alternative configuration file from the one in the data directory.
9+
510
## 0.31.0
611

712
### Added `post_install` script support for tools

‎docs/configuration.md‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,6 @@ The configuration file must be named `arduino-cli`, with the appropriate file ex
116116
Configuration files in the following locations are recognized by Arduino CLI:
117117

118118
1. Location specified by the [`--config-file`][arduino cli command reference] command line flag
119-
1. Current working directory
120-
1. Any parent directory of the current working directory (more immediate parents having higher precedence)
121119
1. Arduino CLI data directory (as configured by `directories.data`)
122120

123121
If multiple configuration files are present, the one highest on the above list is used. Configuration files are not

‎docsgen/main.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func main() {
3131

3232
os.MkdirAll(os.Args[1], 0755) // Create the output folder if it doesn't already exist
3333

34-
configuration.Settings = configuration.Init(configuration.FindConfigFileInArgsOrWorkingDirectory(os.Args))
34+
configuration.Settings = configuration.Init(configuration.FindConfigFileInArgs(os.Args))
3535
cli := cli.NewCommand()
3636
cli.DisableAutoGenTag = true // Disable addition of auto-generated date stamp
3737
err := doc.GenMarkdownTree(cli, os.Args[1])

‎internal/integrationtest/compile_1/compile_test.go‎

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ func compileWithExportBinariesConfig(t *testing.T, env *integrationtest.Environm
526526
defer cli.WorkingDir().Join("arduino-cli.yaml").Remove()
527527

528528
// Test if arduino-cli config file written in the previous run has the `always_export_binaries` flag set.
529-
stdout, _, err := cli.Run("config", "dump", "--format", "json")
529+
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
530530
require.NoError(t, err)
531531
requirejson.Contains(t, stdout, `
532532
{
@@ -536,7 +536,7 @@ func compileWithExportBinariesConfig(t *testing.T, env *integrationtest.Environm
536536
}`)
537537

538538
// Test compilation with export binaries env var set
539-
_, _, err = cli.Run("compile", "-b", fqbn, sketchPath.String())
539+
_, _, err = cli.Run("compile", "-b", fqbn, "--config-file", "arduino-cli.yaml", sketchPath.String())
540540
require.NoError(t, err)
541541
require.DirExists(t, sketchPath.Join("build").String())
542542

@@ -563,7 +563,7 @@ func compileWithInvalidUrl(t *testing.T, env *integrationtest.Environment, cli *
563563
require.NoError(t, err)
564564
defer cli.WorkingDir().Join("arduino-cli.yaml").Remove()
565565

566-
_, stderr, err := cli.Run("compile", "-b", fqbn, sketchPath.String())
566+
_, stderr, err := cli.Run("compile", "-b", fqbn, "--config-file", "arduino-cli.yaml", sketchPath.String())
567567
require.NoError(t, err)
568568
require.Contains(t, string(stderr), "Error initializing instance: Loading index file: loading json index file")
569569
expectedIndexfile := cli.DataDir().Join("package_example_index.json")
@@ -813,10 +813,10 @@ func TestCompileWithCustomLibraries(t *testing.T) {
813813
require.NoError(t, err)
814814

815815
// Init the environment explicitly
816-
_, _, err = cli.Run("update")
816+
_, _, err = cli.Run("update", "--config-file", "arduino-cli.yaml")
817817
require.NoError(t, err)
818818

819-
_, _, err = cli.Run("core", "install", "esp8266:esp8266")
819+
_, _, err = cli.Run("core", "install", "esp8266:esp8266", "--config-file", "arduino-cli.yaml")
820820
require.NoError(t, err)
821821

822822
sketchName := "sketch_with_multiple_custom_libraries"
@@ -825,7 +825,12 @@ func TestCompileWithCustomLibraries(t *testing.T) {
825825

826826
firstLib := sketchPath.Join("libraries1")
827827
secondLib := sketchPath.Join("libraries2")
828-
_, _, err = cli.Run("compile", "--libraries", firstLib.String(), "--libraries", secondLib.String(), "-b", fqbn, sketchPath.String())
828+
_, _, err = cli.Run("compile", "--libraries",
829+
firstLib.String(),
830+
"--libraries", secondLib.String(),
831+
"-b", fqbn,
832+
"--config-file", "arduino-cli.yaml",
833+
sketchPath.String())
829834
require.NoError(t, err)
830835
}
831836

@@ -839,26 +844,26 @@ func TestCompileWithArchivesAndLongPaths(t *testing.T) {
839844
require.NoError(t, err)
840845

841846
// Init the environment explicitly
842-
_, _, err = cli.Run("update")
847+
_, _, err = cli.Run("update", "--config-file", "arduino-cli.yaml")
843848
require.NoError(t, err)
844849

845850
// Install core to compile
846-
_, _, err = cli.Run("core", "install", "esp8266:esp8266@2.7.4")
851+
_, _, err = cli.Run("core", "install", "esp8266:esp8266@2.7.4", "--config-file", "arduino-cli.yaml")
847852
require.NoError(t, err)
848853

849854
// Install test library
850-
_, _, err = cli.Run("lib", "install", "ArduinoIoTCloud")
855+
_, _, err = cli.Run("lib", "install", "ArduinoIoTCloud", "--config-file", "arduino-cli.yaml")
851856
require.NoError(t, err)
852857

853-
stdout, _, err := cli.Run("lib", "examples", "ArduinoIoTCloud", "--format", "json")
858+
stdout, _, err := cli.Run("lib", "examples", "ArduinoIoTCloud", "--format", "json", "--config-file", "arduino-cli.yaml")
854859
require.NoError(t, err)
855860
var libOutput []map[string]interface{}
856861
err = json.Unmarshal(stdout, &libOutput)
857862
require.NoError(t, err)
858863
sketchPath := paths.New(libOutput[0]["library"].(map[string]interface{})["install_dir"].(string))
859864
sketchPath = sketchPath.Join("examples", "ArduinoIoTCloud-Advanced")
860865

861-
_, _, err = cli.Run("compile", "-b", "esp8266:esp8266:huzzah", sketchPath.String())
866+
_, _, err = cli.Run("compile", "-b", "esp8266:esp8266:huzzah", sketchPath.String(), "--config-file", "arduino-cli.yaml")
862867
require.NoError(t, err)
863868
}
864869

@@ -908,16 +913,19 @@ func TestCompileWithFullyPrecompiledLibrary(t *testing.T) {
908913
// https://arduino.github.io/arduino-cli/latest/library-specification/#precompiled-binaries
909914
wd, err := paths.Getwd()
910915
require.NoError(t, err)
911-
_, _, err = cli.Run("lib", "install", "--zip-path", wd.Parent().Join("testdata", "Arduino_TensorFlowLite-2.1.0-ALPHA-precompiled.zip").String())
916+
_, _, err = cli.Run("lib", "install",
917+
"--zip-path", wd.Parent().Join("testdata", "Arduino_TensorFlowLite-2.1.0-ALPHA-precompiled.zip").String(),
918+
"--config-file", "arduino-cli.yaml",
919+
)
912920
require.NoError(t, err)
913921
sketchFolder := cli.SketchbookDir().Join("libraries", "Arduino_TensorFlowLite", "examples", "hello_world")
914922

915923
// Install example dependency
916-
_, _, err = cli.Run("lib", "install", "Arduino_LSM9DS1")
924+
_, _, err = cli.Run("lib", "install", "Arduino_LSM9DS1", "--config-file", "arduino-cli.yaml")
917925
require.NoError(t, err)
918926

919927
// Compile and verify dependencies detection for fully precompiled library is skipped
920-
stdout, _, err := cli.Run("compile", "-b", fqbn, sketchFolder.String(), "-v")
928+
stdout, _, err := cli.Run("compile", "-b", fqbn, "--config-file", "arduino-cli.yaml", sketchFolder.String(), "-v")
921929
require.NoError(t, err)
922930
require.Contains(t, string(stdout), "Skipping dependencies detection for precompiled library Arduino_TensorFlowLite")
923931
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /