Skip to content

Commit 23d68f3

Browse files
committed
Switch to the native PIO Core project config parser
1 parent 72c3a1d commit 23d68f3

File tree

5 files changed

+35
-36
lines changed

5 files changed

+35
-36
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@
891891
},
892892
"dependencies": {
893893
"fs-plus": "~3.1.1",
894-
"platformio-node-helpers": "~9.9.3",
894+
"platformio-node-helpers": "~10.0.0",
895895
"platformio-vscode-debug": "~1.4.1"
896896
},
897897
"devDependencies": {

src/home.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ export default class PIOHome {
184184

185185
onOpenProjectCommand(params) {
186186
if (extension.ProjectManager) {
187-
updateProjectItemState(vscode.Uri.file(params).fsPath, 'activeEnv', undefined);
187+
updateProjectItemState(vscode.Uri.file(params).fsPath, 'selectedEnv', undefined);
188188
extension.ProjectManager.switchToProject(vscode.Uri.file(params).fsPath);
189189
}
190190
this.disposePanel();

src/project/manager.js

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,9 @@ export default class ProjectManager {
102102
vscode.commands.registerCommand('platformio-ide._runProjectTask', (task) =>
103103
this._taskManager.runTask(task)
104104
),
105-
vscode.commands.registerCommand('platformio-ide.activeEnvironment', () =>
106-
this._pool.getActiveObserver().getActiveEnvName()
105+
vscode.commands.registerCommand(
106+
'platformio-ide.activeEnvironment',
107+
async () => await this._pool.getActiveObserver().revealActiveEnvironment()
107108
),
108109
];
109110
this.internalSubscriptions = [];
@@ -156,8 +157,8 @@ export default class ProjectManager {
156157
}
157158
projectHelpers.updateProjectItemState(
158159
observer.projectDir,
159-
'activeEnv',
160-
observer.getActiveEnvName()
160+
'selectedEnv',
161+
observer.getSelectedEnv()
161162
);
162163
}
163164

@@ -169,28 +170,28 @@ export default class ProjectManager {
169170
this._sbEnvSwitcher.text = '$(root-folder) Loading...';
170171

171172
let currentProjectDir = undefined;
172-
let currentEnvName = undefined;
173+
let currentEnv = undefined;
173174
if (this._pool.getActiveObserver()) {
174175
currentProjectDir = this._pool.getActiveObserver().projectDir;
175-
currentEnvName = this._pool.getActiveObserver().getActiveEnvName();
176+
currentEnv = this._pool.getActiveObserver().getSelectedEnv();
176177
}
177178
const observer = this._pool.getObserver(projectDir);
178-
if ('envName' in options) {
179-
await observer.switchProjectEnv(options.envName);
180-
} else if (!observer.getActiveEnvName()) {
179+
if ('env' in options) {
180+
await observer.switchProjectEnv(options.env);
181+
} else if (!observer.getSelectedEnv()) {
181182
await observer.switchProjectEnv(
182-
projectHelpers.getProjectItemState(projectDir, 'activeEnv')
183+
projectHelpers.getProjectItemState(projectDir, 'selectedEnv')
183184
);
184185
}
185186

186187
// ignore active project and & env
187188
if (
188189
!currentProjectDir ||
189190
currentProjectDir !== projectDir ||
190-
currentEnvName !== observer.getActiveEnvName()
191+
currentEnv !== observer.getSelectedEnv()
191192
) {
192193
disposeSubscriptions(this.internalSubscriptions);
193-
this._pool.switch(projectDir);
194+
await this._pool.switch(projectDir);
194195
this._taskManager = new ProjectTaskManager(projectDir, observer);
195196
this.internalSubscriptions.push(
196197
this._taskManager,
@@ -238,10 +239,10 @@ export default class ProjectManager {
238239
if (!observer) {
239240
return;
240241
}
241-
const envName = observer.getActiveEnvName()
242-
? `env:${observer.getActiveEnvName()}`
242+
const env = observer.getSelectedEnv()
243+
? `env:${observer.getSelectedEnv()}`
243244
: 'Default';
244-
this._sbEnvSwitcher.text = `$(root-folder) ${envName} (${path.basename(
245+
this._sbEnvSwitcher.text = `$(root-folder) ${env} (${path.basename(
245246
observer.projectDir
246247
)})`;
247248
}
@@ -250,7 +251,7 @@ export default class ProjectManager {
250251
const items = [];
251252
for (const projectDir of projectHelpers.getPIOProjectDirs()) {
252253
const observer = this._pool.getObserver(projectDir);
253-
const envs = await observer.getProjectEnvs();
254+
const envs = (await observer.getConfig()).envs();
254255
if (!envs || !envs.length) {
255256
continue;
256257
}
@@ -263,10 +264,10 @@ export default class ProjectManager {
263264
description: `$(folder) ${shortProjectDir} ("default_envs" from "platformio.ini")`,
264265
});
265266
items.push(
266-
...envs.map((item) => ({
267+
...envs.map((env) => ({
267268
projectDir,
268-
envName: item.name,
269-
label: `env:${item.name}`,
269+
env,
270+
label: `env:${env}`,
270271
description: `$(folder) ${shortProjectDir}`,
271272
}))
272273
);
@@ -277,6 +278,6 @@ export default class ProjectManager {
277278
if (!pickedItem) {
278279
return;
279280
}
280-
this.switchToProject(pickedItem.projectDir, { envName: pickedItem.envName });
281+
this.switchToProject(pickedItem.projectDir, { env: pickedItem.env });
281282
}
282283
}

src/project/task-tree.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import * as vscode from 'vscode';
1111
export default class ProjectTasksTreeProvider {
1212
static DEFAULT_ENV_NAME = 'Default';
1313

14-
constructor(id, envs, tasks, activeEnvName) {
14+
constructor(id, envs, tasks, selectedEnv = undefined) {
1515
this.id = id;
1616
this.envs = envs;
1717
this.tasks = tasks;
18-
this.activeEnvName = activeEnvName;
18+
this.selectedEnv = selectedEnv;
1919
this.multiEnvProject = this.envs.length > 1;
2020
}
2121

@@ -49,15 +49,15 @@ export default class ProjectTasksTreeProvider {
4949

5050
getRootChildren() {
5151
const result = [];
52-
for (const envName of [undefined, ...this.envs.map((item) => item.name)]) {
52+
for (const env of [undefined, ...this.envs]) {
5353
const treeItem = new vscode.TreeItem(
54-
envName || ProjectTasksTreeProvider.DEFAULT_ENV_NAME,
55-
envName && (envName === this.activeEnvName || !this.multiEnvProject)
54+
env || ProjectTasksTreeProvider.DEFAULT_ENV_NAME,
55+
env && (env === this.selectedEnv || !this.multiEnvProject)
5656
? vscode.TreeItemCollapsibleState.Expanded
5757
: vscode.TreeItemCollapsibleState.Collapsed
5858
);
59-
treeItem.id = `${this.id}-${envName}`;
60-
treeItem.env = envName;
59+
treeItem.id = `${this.id}-${env}`;
60+
treeItem.env = env;
6161
treeItem.iconPath = new vscode.ThemeIcon('root-folder');
6262
result.push(treeItem);
6363
}

src/project/tasks.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,18 @@ export default class ProjectTaskManager {
5656
this._sid = Math.random();
5757
}
5858

59-
const projectEnvs = await this.projectObserver.getProjectEnvs();
59+
const projectEnvs = (await this.projectObserver.getConfig()).envs();
6060
const projectTasks = [...(await this.projectObserver.getDefaultTasks())];
61-
for (const item of projectEnvs) {
62-
projectTasks.push(
63-
...((await this.projectObserver.getLoadedEnvTasks(item.name)) || [])
64-
);
61+
for (const env of projectEnvs) {
62+
projectTasks.push(...((await this.projectObserver.getLoadedEnvTasks(env)) || []));
6563
}
6664

6765
const taskViewer = vscode.window.createTreeView(ProjectTaskManager.TASKS_VIEW_ID, {
6866
treeDataProvider: new ProjectTasksTreeProvider(
6967
this._sid,
7068
projectEnvs,
7169
projectTasks,
72-
this.projectObserver.getActiveEnvName()
70+
this.projectObserver.getSelectedEnv()
7371
),
7472
showCollapseAll: true,
7573
});
@@ -239,7 +237,7 @@ export default class ProjectTaskManager {
239237
const _runTask = (name) => {
240238
const candidates = tasks.filter(
241239
(task) =>
242-
task.name === name && task.coreEnv === this.projectObserver.getActiveEnvName()
240+
task.name === name && task.coreEnv === this.projectObserver.getSelectedEnv()
243241
);
244242
this.runTask(candidates[0]);
245243
};

0 commit comments

Comments
 (0)