Skip to content

Commit 753938a

Browse files
committed
Add "multienv" property for baseTask
1 parent 64bc2ed commit 753938a

File tree

1 file changed

+39
-23
lines changed

1 file changed

+39
-23
lines changed

src/project/tasks.js

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,79 +14,96 @@ export class ProjectTasks {
1414
static baseTasks = [
1515
{
1616
name: 'Build',
17-
args: ['run']
17+
args: ['run'],
18+
multienv: true
1819
},
1920
{
2021
name: 'Upload',
21-
args: ['run', '--target', 'upload']
22+
args: ['run', '--target', 'upload'],
23+
multienv: true
2224
},
2325
{
2426
name: 'Monitor',
25-
args: ['device', 'monitor']
27+
args: ['device', 'monitor'],
28+
multienv: true
2629
},
2730
{
2831
name: 'Upload and Monitor',
2932
args: ['run', '--target', 'upload', '--target', 'monitor'],
33+
multienv: true,
3034
filter: (data) => !data.platform.includes('riscv_gap')
3135
},
3236
{
3337
name: 'Upload using Programmer',
3438
args: ['run', '--target', 'program'],
39+
multienv: true,
3540
filter: (data) => data.platform.includes('atmelavr')
3641
},
3742
{
3843
name: 'Set Fuses',
3944
args: ['run', '--target', 'fuses'],
45+
multienv: true,
4046
filter: (data) => data.platform.includes('atmelavr')
4147
},
4248
{
4349
name: 'Upload and Set Fuses',
4450
args: ['run', '--target', 'fuses', '--target', 'upload'],
51+
multienv: true,
4552
filter: (data) => data.platform.includes('atmelavr')
4653
},
4754
{
4855
name: 'Upload using Programmer and Set Fuses',
4956
args: ['run', '--target', 'fuses', '--target', 'program'],
57+
multienv: true,
5058
filter: (data) => data.platform.includes('atmelavr')
5159
},
5260
{
5361
name: 'Upload File System image',
5462
args: ['run', '--target', 'uploadfs'],
63+
multienv: true,
5564
filter: (data) => data.platform.includes('espressif') || data.platform.includes('riscv_gap')
5665
},
5766
{
5867
name: 'Erase Flash',
5968
args: ['run', '--target', 'erase'],
69+
multienv: true,
6070
filter: (data) => data.platform.includes('espressif') || data.platform.includes('nordicnrf')
6171
},
6272
{
6373
name: 'Devices',
64-
args: ['device', 'list']
74+
args: ['device', 'list'],
75+
6576
},
6677
{
6778
name: 'Test',
68-
args: ['test']
79+
args: ['test'],
80+
multienv: true
6981
},
7082
{
7183
name: 'Pre-Debug',
7284
description: 'build in debug mode',
73-
args: ['debug']
85+
args: ['debug'],
86+
multienv: true
7487
},
7588
{
7689
name: 'Clean',
77-
args: ['run', '--target', 'clean']
90+
args: ['run', '--target', 'clean'],
91+
multienv: true
7892
},
7993
{
8094
name: 'Verbose Build',
81-
args: ['run', '--verbose']
95+
args: ['run', '--verbose'],
96+
multienv: true
8297
},
8398
{
8499
name: 'Verbose Upload',
85-
args: ['run', '--verbose', '--target', 'upload']
100+
args: ['run', '--verbose', '--target', 'upload'],
101+
multienv: true
86102
},
87103
{
88104
name: 'Remote Upload',
89-
args: ['remote', 'run', '--target', 'upload']
105+
args: ['remote', 'run', '--target', 'upload'],
106+
multienv: true
90107
},
91108
{
92109
name: 'Remote Monitor',
@@ -98,7 +115,8 @@ export class ProjectTasks {
98115
},
99116
{
100117
name: 'Remote Test',
101-
args: ['remote', 'test']
118+
args: ['remote', 'test'],
119+
multienv: true
102120
}
103121
];
104122

@@ -111,7 +129,7 @@ export class ProjectTasks {
111129
if (!this.projectDir) {
112130
return [];
113131
}
114-
const projectData = [];
132+
const projectEnvs = [];
115133

116134
const prevCWD = process.cwd();
117135
process.chdir(this.projectDir);
@@ -122,7 +140,7 @@ export class ProjectTasks {
122140
if (!platform) {
123141
continue;
124142
}
125-
projectData.push({
143+
projectEnvs.push({
126144
env,
127145
platform
128146
});
@@ -138,21 +156,19 @@ export class ProjectTasks {
138156

139157
// base tasks
140158
ProjectTasks.baseTasks.forEach(task => {
141-
if (!task.filter || projectData.some(data => task.filter(data))) {
159+
if (!task.filter || projectEnvs.some(data => task.filter(data))) {
142160
result.push(new TaskItem(task.name, task.description, task.args.slice(0)));
143161
}
144162
});
145163

146-
// project environment tasks
147-
if (projectData.length > 1) {
148-
projectData.forEach(data => {
149-
ProjectTasks.baseTasks.forEach(task => {
150-
if (!task.filter || task.filter(data)) {
151-
result.push(new TaskItem(task.name, task.description, [...task.args.slice(0), '--environment', data.env]));
152-
}
153-
});
164+
// multi environment tasks
165+
projectEnvs.forEach(data => {
166+
ProjectTasks.baseTasks.forEach(task => {
167+
if (task.multienv && (!task.filter || task.filter(data))) {
168+
result.push(new TaskItem(task.name, task.description, [...task.args.slice(0), '--environment', data.env]));
169+
}
154170
});
155-
}
171+
});
156172

157173
// Misc tasks
158174
result.push(new TaskItem('Update project libraries', undefined, ['lib', 'update']));

0 commit comments

Comments
 (0)