@@ -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