Skip to content

Commit df8c924

Browse files
authored
Update warning message for --git-url and --zip-file lib install flags (#1088)
1 parent 9ee4fd8 commit df8c924

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

cli/lib/install.go

+15-5
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@ package lib
1717

1818
import (
1919
"context"
20+
"fmt"
2021
"os"
22+
"strings"
2123

2224
"github.com/arduino/arduino-cli/cli/errorcodes"
2325
"github.com/arduino/arduino-cli/cli/feedback"
26+
"github.com/arduino/arduino-cli/cli/globals"
2427
"github.com/arduino/arduino-cli/cli/instance"
2528
"github.com/arduino/arduino-cli/cli/output"
2629
"github.com/arduino/arduino-cli/commands/lib"
@@ -41,10 +44,8 @@ func initInstallCommand() *cobra.Command {
4144
Run: runInstallCommand,
4245
}
4346
installCommand.Flags().BoolVar(&installFlags.noDeps, "no-deps", false, "Do not install dependencies.")
44-
if configuration.Settings.GetBool("library.enable_unsafe_install") {
45-
installCommand.Flags().BoolVar(&installFlags.gitURL, "git-url", false, "Enter git url for libraries hosted on repositories")
46-
installCommand.Flags().BoolVar(&installFlags.zipPath, "zip-path", false, "Enter a path to zip file")
47-
}
47+
installCommand.Flags().BoolVar(&installFlags.gitURL, "git-url", false, "Enter git url for libraries hosted on repositories")
48+
installCommand.Flags().BoolVar(&installFlags.zipPath, "zip-path", false, "Enter a path to zip file")
4849
return installCommand
4950
}
5051

@@ -58,7 +59,16 @@ func runInstallCommand(cmd *cobra.Command, args []string) {
5859
instance := instance.CreateInstanceIgnorePlatformIndexErrors()
5960

6061
if installFlags.zipPath || installFlags.gitURL {
61-
feedback.Print("--git-url and --zip-path flags are dangerous, use it at your own risk.")
62+
if !configuration.Settings.GetBool("library.enable_unsafe_install") {
63+
documentationURL := "https://arduino.github.io/arduino-cli/latest/configuration/#configuration-keys"
64+
if !strings.Contains(globals.VersionInfo.VersionString, "git") {
65+
split := strings.Split(globals.VersionInfo.VersionString, ".")
66+
documentationURL = fmt.Sprintf("https://arduino.github.io/arduino-cli/%s.%s/configuration/#configuration-keys", split[0], split[1])
67+
}
68+
feedback.Errorf("--git-url and --zip-path are disabled by default, for more information see: %v", documentationURL)
69+
os.Exit(errorcodes.ErrGeneric)
70+
}
71+
feedback.Print("--git-url and --zip-path flags allow installing untrusted files, use it at your own risk.")
6272
}
6373

6474
if installFlags.zipPath {

test/test_lib.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,13 @@ def test_install_git_url_and_zip_path_flags_visibility(run_command, data_dir, do
173173
git_url = "https://github.com/arduino-libraries/WiFi101.git"
174174
res = run_command(f"lib install --git-url {git_url}")
175175
assert res.failed
176-
assert "Error: unknown flag: --git-url" in res.stderr
176+
assert "--git-url and --zip-path are disabled by default, for more information see:" in res.stderr
177177

178178
assert run_command("lib download [email protected]")
179179
zip_path = Path(downloads_dir, "libraries", "AudioZero-1.0.0.zip")
180180
res = run_command(f"lib install --zip-path {zip_path}")
181181
assert res.failed
182-
assert "Error: unknown flag: --zip-path" in res.stderr
182+
assert "--git-url and --zip-path are disabled by default, for more information see:" in res.stderr
183183

184184
env = {
185185
"ARDUINO_DATA_DIR": data_dir,
@@ -190,11 +190,11 @@ def test_install_git_url_and_zip_path_flags_visibility(run_command, data_dir, do
190190
# Verifies installation is successful when flags are enabled with env var
191191
res = run_command(f"lib install --git-url {git_url}", custom_env=env)
192192
assert res.ok
193-
assert "--git-url and --zip-path flags are dangerous, use it at your own risk." in res.stdout
193+
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
194194

195195
res = run_command(f"lib install --zip-path {zip_path}", custom_env=env)
196196
assert res.ok
197-
assert "--git-url and --zip-path flags are dangerous, use it at your own risk." in res.stdout
197+
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
198198

199199
# Uninstall libraries to install them again
200200
assert run_command("lib uninstall WiFi101 AudioZero")
@@ -204,11 +204,11 @@ def test_install_git_url_and_zip_path_flags_visibility(run_command, data_dir, do
204204

205205
res = run_command(f"lib install --git-url {git_url}")
206206
assert res.ok
207-
assert "--git-url and --zip-path flags are dangerous, use it at your own risk." in res.stdout
207+
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
208208

209209
res = run_command(f"lib install --zip-path {zip_path}")
210210
assert res.ok
211-
assert "--git-url and --zip-path flags are dangerous, use it at your own risk." in res.stdout
211+
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
212212

213213

214214
def test_install_with_git_url(run_command, data_dir, downloads_dir):
@@ -224,11 +224,11 @@ def test_install_with_git_url(run_command, data_dir, downloads_dir):
224224
# Test git-url library install
225225
res = run_command("lib install --git-url https://github.com/arduino-libraries/WiFi101.git")
226226
assert res.ok
227-
assert "--git-url and --zip-path flags are dangerous, use it at your own risk." in res.stdout
227+
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
228228

229229
# Test failing-install as repository already exists
230230
res = run_command("lib install --git-url https://github.com/arduino-libraries/WiFi101.git")
231-
assert "--git-url and --zip-path flags are dangerous, use it at your own risk." in res.stdout
231+
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
232232
assert "Error installing Git Library: repository already exists" in res.stderr
233233

234234

@@ -249,7 +249,7 @@ def test_install_with_zip_path(run_command, data_dir, downloads_dir):
249249
# Test zip-path install
250250
res = run_command(f"lib install --zip-path {zip_path}")
251251
assert res.ok
252-
assert "--git-url and --zip-path flags are dangerous, use it at your own risk." in res.stdout
252+
assert "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." in res.stdout
253253

254254

255255
def test_update_index(run_command):

0 commit comments

Comments
 (0)