@@ -89,6 +89,26 @@ interface JakeTaskKind extends vscode.TaskKind {
8989 file ?: string ;
9090}
9191
92+ const buildNames : string [ ] = [ 'build' , 'compile' , 'watch' ] ;
93+ function isBuildTask ( name : string ) : boolean {
94+ for ( let buildName of buildNames ) {
95+ if ( name . indexOf ( buildName ) !== - 1 ) {
96+ return true ;
97+ }
98+ }
99+ return false ;
100+ }
101+
102+ const testNames : string [ ] = [ 'test' ] ;
103+ function isTestTask ( name : string ) : boolean {
104+ for ( let testName of testNames ) {
105+ if ( name . indexOf ( testName ) !== - 1 ) {
106+ return true ;
107+ }
108+ }
109+ return false ;
110+ }
111+
92112async function getJakeTasks ( ) : Promise < vscode . Task [ ] > {
93113 let workspaceRoot = vscode . workspace . rootPath ;
94114 let emptyTasks : vscode . Task [ ] = [ ] ;
@@ -122,8 +142,6 @@ async function getJakeTasks(): Promise<vscode.Task[]> {
122142 }
123143 let result : vscode . Task [ ] = [ ] ;
124144 if ( stdout ) {
125- let buildTask : { task : vscode . Task | undefined , rank : number } = { task : undefined , rank : 0 } ;
126- let testTask : { task : vscode . Task | undefined , rank : number } = { task : undefined , rank : 0 } ;
127145 let lines = stdout . split ( / \r { 0 , 1 } \n / ) ;
128146 for ( let line of lines ) {
129147 if ( line . length === 0 ) {
@@ -140,23 +158,13 @@ async function getJakeTasks(): Promise<vscode.Task[]> {
140158 let task = new vscode . Task ( kind , taskName , new vscode . ShellExecution ( `${ jakeCommand } ${ taskName } ` ) ) ;
141159 result . push ( task ) ;
142160 let lowerCaseLine = line . toLowerCase ( ) ;
143- if ( lowerCaseLine === 'build' ) {
144- buildTask = { task, rank : 2 } ;
145- } else if ( lowerCaseLine . indexOf ( 'build' ) !== - 1 && buildTask . rank < 1 ) {
146- buildTask = { task, rank : 1 } ;
147- } else if ( lowerCaseLine === 'test' ) {
148- testTask = { task, rank : 2 } ;
149- } else if ( lowerCaseLine . indexOf ( 'test' ) !== - 1 && testTask . rank < 1 ) {
150- testTask = { task, rank : 1 } ;
161+ if ( isBuildTask ( lowerCaseLine ) ) {
162+ task . group = vscode . TaskGroup . Build ;
163+ } else if ( isTestTask ( lowerCaseLine ) ) {
164+ task . group = vscode . TaskGroup . Test ;
151165 }
152166 }
153167 }
154- if ( buildTask . task ) {
155- buildTask . task . group = vscode . TaskGroup . Build ;
156- }
157- if ( testTask . task ) {
158- testTask . task . group = vscode . TaskGroup . Test ;
159- }
160168 }
161169 return result ;
162170 } catch ( err ) {
0 commit comments