Description
Bug Report
Current behavior
The --config-file
global command line option currently only defines the directory containing the configuration file. It does not allow configuring the specific configuration file within that directory.
arduino-cli expects the path specified via --config-file
to contain a file named with the prefix arduino-cli
followed by a file extension associated with one of the supported formats.
$ ./arduino-cli config dump --verbose --config-file ./config
INFO[0000] Using config file: /home/per/ArduinoIDE/arduino-cli_nightly/config/arduino-cli.json
Even if you specify a filename, it will be ignored:
$ ./arduino-cli config dump --verbose --config-file ./config/foo.json
INFO[0000] Using config file: /home/per/ArduinoIDE/arduino-cli_nightly/config/arduino-cli.json
Unless the file doesn't exist:
$ ./arduino-cli config dump --verbose --config-file ./config/nonexistent.json
INFO[0000] Config file not found, using default values
If the configuration directory contains multiple configuration files, there is a specific order of precedence that determines which one is used, regardless of the filename provided to the --config-file
option:
$ ./arduino-cli config dump --verbose --config-file ./config/arduino-cli.toml
INFO[0000] Using config file: /home/per/ArduinoIDE/arduino-cli_nightly/config/arduino-cli.json
(note that I specified the .toml file, but the .json file was used instead)
The order of precedence:
- JSON
- TOML
- YAML
- Java properties file
- HCL
- envfile
- INI
Expected behavior
The --config-file
option's documentation seems somewhat misleading to me:
--config-file string The custom config file (if not specified the default will be used).
From reading that, I would expect to be able to specify any arbitrary filename (with the appropriate file extension for the file's format).
I don't have a problem with the current behavior of arduino-cli regarding custom configuration file locations, it's just not the behavior I expect from the option name and command line help. I don't think requiring a specific filename (arduino-cli
) is onerous, and I don't think it likely the user will ever have configuration files of multiple formats in the configuration directory (I only discovered this because I was verifying support for all the formats). So a simple solution for this would be keep the current behavior, but change the option name to something like --config-dir
(hopefully keeping --config-file
as an undocumented alias for backwards compatibility), and update the command line help accordingly.
Environment
- CLI version (output of
arduino-cli version
): 0.11.0-rc1 Commit: 5373961 - OS and platform: Ubuntu 20.04, Windows 10