Skip to content

Commit 5d3e9da

Browse files
committed
Added option to use a local arduino-cli.yaml config file to add e.g. custom library paths.
1 parent bbb99eb commit 5d3e9da

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

package.json

+5
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,11 @@
212212
"default": false,
213213
"markdownDescription": "Use Arduino CLI installed instead of the legacy Arduino IDE. If `#arduino.path#` and `#arduino.commandPath#` are not set, the extension will use a version of Arduino CLI bundled with the extension. (Requires a restart after change)"
214214
},
215+
"arduino.useLocalArduinoCliConfigFile": {
216+
"type": "boolean",
217+
"default": false,
218+
"markdownDescription": "Use a local arduino-cli.yaml file instead the default .../Arduino15/arduino-cli.yaml. (Requires a restart after change)"
219+
},
215220
"arduino.path": {
216221
"type": "string",
217222
"default": "",

src/arduino/arduino.ts

+4
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,10 @@ export class ArduinoApp {
668668
}
669669
}
670670

671+
if (this.useArduinoCli() && this._settings.useLocalArduinoCliConfigFile) {
672+
args.push("--config-file", path.join(ArduinoWorkspace.rootPath, "arduino-cli.yaml"));
673+
}
674+
671675
if (dc.buildPreferences) {
672676
for (const pref of dc.buildPreferences) {
673677
// Note: BuildPrefSetting makes sure that each preference

src/arduino/arduinoSettings.ts

+8
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export interface IArduinoSettings {
2525
preferencePath: string;
2626
preferences: Map<string, string>;
2727
useArduinoCli: boolean;
28+
useLocalArduinoCliConfigFile: boolean;
2829
usingBundledArduinoCli: boolean;
2930
analyzeOnSettingChange: boolean;
3031
reloadPreferences(): void;
@@ -43,6 +44,8 @@ export class ArduinoSettings implements IArduinoSettings {
4344

4445
private _useArduinoCli: boolean;
4546

47+
private _useLocalArduinoCliConfigFile: boolean;
48+
4649
private _usingBundledArduinoCli: boolean = false;
4750

4851
private readonly bundledArduinoCliName: { [platform: string]: string } = {
@@ -62,6 +65,7 @@ export class ArduinoSettings implements IArduinoSettings {
6265
const platform = os.platform();
6366
this._commandPath = VscodeSettings.getInstance().commandPath;
6467
this._useArduinoCli = VscodeSettings.getInstance().useArduinoCli;
68+
this._useLocalArduinoCliConfigFile = VscodeSettings.getInstance().useLocalArduinoCliConfigFile;
6569
await this.tryResolveArduinoPath();
6670
if (platform === "win32") {
6771
await this.updateWindowsPath();
@@ -171,6 +175,10 @@ export class ArduinoSettings implements IArduinoSettings {
171175
return this._useArduinoCli;
172176
}
173177

178+
get useLocalArduinoCliConfigFile() {
179+
return this._useLocalArduinoCliConfigFile;
180+
}
181+
174182
public get usingBundledArduinoCli() {
175183
return this._usingBundledArduinoCli;
176184
}

src/arduino/vscodeSettings.ts

+10
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const configKeys = {
1717
IGNORE_BOARDS: "arduino.ignoreBoards",
1818
SKIP_HEADER_PROVIDER: "arduino.skipHeaderProvider",
1919
USE_ARDUINO_CLI: "arduino.useArduinoCli",
20+
USE_LOCAL_ARDUINO_CLI_CONFIG_FILE: "arduino.useLocalArduinoCliConfigFile",
2021
DISABLE_INTELLISENSE_AUTO_GEN: "arduino.disableIntelliSenseAutoGen",
2122
ANALYZE_ON_OPEN: "arduino.analyzeOnOpen",
2223
ANALYZE_ON_SETTING_CHANGE: "arduino.analyzeOnSettingChange",
@@ -34,6 +35,7 @@ export interface IVscodeSettings {
3435
ignoreBoards: string[];
3536
skipHeaderProvider: boolean;
3637
useArduinoCli: boolean;
38+
useLocalArduinoCliConfigFile: boolean;
3739
disableIntelliSenseAutoGen: boolean;
3840
analyzeOnOpen: boolean;
3941
analyzeOnSettingChange: boolean;
@@ -123,6 +125,14 @@ export class VscodeSettings implements IVscodeSettings {
123125
return this.setConfigValue(configKeys.USE_ARDUINO_CLI, value, true);
124126
}
125127

128+
public get useLocalArduinoCliConfigFile(): boolean {
129+
return this.getConfigValue(configKeys.USE_LOCAL_ARDUINO_CLI_CONFIG_FILE);
130+
}
131+
132+
public setUseLocalArduinoCliConfigFile(value: boolean): Promise<void> {
133+
return this.setConfigValue(configKeys.USE_LOCAL_ARDUINO_CLI_CONFIG_FILE, value, true);
134+
}
135+
126136
public get skipHeaderProvider(): boolean {
127137
return this.getConfigValue<boolean>(configKeys.SKIP_HEADER_PROVIDER);
128138
}

0 commit comments

Comments
 (0)