Skip to content

Commit d6fa2e5

Browse files
committed
✨ (tasks) update default tasks to latest itee standards
1 parent 7969058 commit d6fa2e5

File tree

7 files changed

+136
-54
lines changed

7 files changed

+136
-54
lines changed

.tasks/.tests/benchmarks/run-benchmarks.task.mjs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
1-
import { series } from 'gulp'
2-
import { runBenchmarksForBackendTask } from './run-benchmarks-for-backend.task.mjs'
3-
import { runBenchmarksForFrontendTask } from './run-benchmarks-for-frontend.task.mjs'
1+
import { serializeTasksFrom } from '../../_utils.mjs'
2+
import { runBenchmarksTaskFiles as taskFiles } from '../../configs/run-benchmarks.conf.mjs'
43

5-
/**
6-
* @method npm run build-test
7-
* @global
8-
* @description Will run benchmarks in back and front environments
9-
*/
10-
const runBenchmarksTestsTask = series(
11-
runBenchmarksForBackendTask,
12-
runBenchmarksForFrontendTask,
13-
)
4+
const runBenchmarksTestsTask = await serializeTasksFrom( taskFiles )
145
runBenchmarksTestsTask.displayName = 'run-benchmarks'
156
runBenchmarksTestsTask.description = 'Will run benchmarks in back and front environments.'
167
runBenchmarksTestsTask.flags = null

.tasks/.tests/unit-tests/run-unit-tests.task.mjs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
1-
import { series } from 'gulp'
2-
import { runUnitTestsForBackendTask } from './run-unit-tests-for-backend.task.mjs'
3-
import { runUnitTestsForFrontendTask } from './run-unit-tests-for-frontend.task.mjs'
1+
import { serializeTasksFrom } from '../../_utils.mjs'
2+
import { runUnitTestsTaskFiles as taskFiles } from '../../configs/run-unit-tests.conf.mjs'
43

5-
/**
6-
* @method npm run build-test
7-
* @global
8-
* @description Will run unit tests in back and front environments
9-
*/
10-
const runUnitTestsTask = series(
11-
runUnitTestsForBackendTask,
12-
runUnitTestsForFrontendTask,
13-
)
4+
const runUnitTestsTask = await serializeTasksFrom( taskFiles )
145
runUnitTestsTask.displayName = 'run-unit-tests'
156
runUnitTestsTask.description = 'Will run unit tests in back and front environments.'
167
runUnitTestsTask.flags = null

.tasks/_refresh.mjs

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,53 @@
1-
import colors from 'ansi-colors'
2-
import log from 'fancy-log'
3-
import { writeFileSync } from 'fs'
4-
import { glob } from 'glob'
1+
import colors from 'ansi-colors'
2+
import log from 'fancy-log'
3+
import { writeFileSync } from 'fs'
54
import {
5+
basename,
66
join,
7-
normalize,
87
relative
9-
} from 'path'
10-
import { packageRootDirectory } from './_utils.mjs'
8+
} from 'path'
9+
import {
10+
getFilesFrom,
11+
packageRootDirectory
12+
} from './_utils.mjs'
13+
import { tasksToIgnore } from './configs/refresh.conf.mjs'
1114

1215
const {
13-
blue,
1416
green,
15-
magenta,
16-
cyan
17+
yellow,
1718
} = colors
1819

20+
// Get and filter tasks to expose
21+
const taskFiles = getFilesFrom(
22+
join( packageRootDirectory, '.tasks/{.*.task.mjs,*.task.mjs,.**/*.task.mjs,.**/**/*.task.mjs}' ),
23+
filePath => {
24+
const relativeFilepath = relative( packageRootDirectory, filePath )
25+
const filename = basename( filePath )
26+
const included = !tasksToIgnore.includes( filename )
27+
28+
included
29+
? log( 'Include', green( relativeFilepath ) )
30+
: log( 'Exclude', yellow( relativeFilepath ) )
31+
32+
return included
33+
}
34+
)
35+
36+
// Prepare gulpfile content with header
1937
let gulpfileContent = '' +
2038
'/**\n' +
2139
' * This file is auto-generated by internal gulp command.\n' +
2240
' * If you want to customize the available gulp tasks, create your own in .tasks folder\n' +
2341
' * and run "gulp refresh"\n' +
2442
' */\n\n'
2543

26-
const taskFiles = glob.sync( join( packageRootDirectory, '.tasks/{.*.task.mjs,*.task.mjs,.**/*.task.mjs,.**/**/*.task.mjs}' ) )
27-
.map( filePath => normalize( filePath ) )
28-
44+
// Generate tasks exports and append to gulpfile content
2945
for ( const taskFile of taskFiles ) {
30-
const module = await import(taskFile)
31-
32-
const exportStrings = []
33-
for ( const moduleKey in module ) {
34-
const task = module[ moduleKey ]
35-
const name = task.name ?? null
36-
const displayName = task.displayName ?? null
37-
const fullName = ( moduleKey !== name ) ? `${ blue( moduleKey ) }( ${ magenta( name ) } )` : `${ blue( name ) }`
38-
const exportAs = ( displayName ) ? ` as ${ cyan( displayName ) }` : ''
39-
const exportString = fullName + exportAs
40-
exportStrings.push( exportString )
41-
}
42-
4346
const relativeTaskFile = relative( packageRootDirectory, taskFile )
44-
log( 'Found', green( relativeTaskFile ), 'with', exportStrings.join( ', ' ) )
4547
gulpfileContent += `export * from './${ relativeTaskFile }'\n`
4648
}
4749

50+
// Create gulpfile file
4851
const gulpfilePath = join( packageRootDirectory, 'gulpfile.mjs' )
49-
log( 'Refreshing', green( gulpfilePath ) )
52+
log( 'Refresh', green( gulpfilePath ) )
5053
writeFileSync( gulpfilePath, gulpfileContent )

.tasks/_utils.mjs

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,26 @@ import {
77
readFileSync,
88
writeFileSync
99
} from 'fs'
10+
import { glob } from 'glob'
11+
import {
12+
parallel,
13+
series
14+
} from 'gulp'
1015
import {
1116
dirname,
12-
join
17+
join,
18+
normalize,
19+
relative
1320
} from 'path'
1421
import { fileURLToPath } from 'url'
1522

1623
const {
1724
red,
1825
green,
19-
yellow
26+
yellow,
27+
blue,
28+
magenta,
29+
cyan
2030
} = colors
2131

2232
///
@@ -154,6 +164,67 @@ function createFile( filePath, fileContent ) {
154164

155165
}
156166

167+
function getFilesFrom( globPattern, filter = ( any ) => true ) {
168+
169+
return glob.sync( globPattern )
170+
.map( filePath => normalize( filePath ) )
171+
.filter( filter )
172+
173+
}
174+
175+
///
176+
177+
async function getTasksFrom( taskFiles = [] ) {
178+
179+
const tasks = []
180+
for ( const taskFile of taskFiles ) {
181+
const relativeTaskFile = relative( packageRootDirectory, taskFile )
182+
183+
try {
184+
185+
const module = await import(taskFile)
186+
187+
const exportStrings = []
188+
for ( const moduleKey in module ) {
189+
const task = module[ moduleKey ]
190+
tasks.push( task )
191+
192+
const name = task.name ?? null
193+
const displayName = task.displayName ?? null
194+
const fullName = ( moduleKey !== name ) ? `${ blue( moduleKey ) }( ${ magenta( name ) } )` : `${ blue( name ) }`
195+
const exportAs = ( displayName ) ? ` as ${ cyan( displayName ) }` : ''
196+
const exportString = fullName + exportAs
197+
exportStrings.push( exportString )
198+
}
199+
200+
log( 'Process', green( relativeTaskFile ), `with task${ ( exportStrings.length > 1 ) ? 's' : '' }`, exportStrings.join( ', ' ) )
201+
202+
} catch ( error ) {
203+
204+
log( 'Error ', red( relativeTaskFile ), error.message )
205+
206+
}
207+
208+
}
209+
210+
return tasks
211+
212+
}
213+
214+
async function serializeTasksFrom( taskFiles = [] ) {
215+
216+
const tasks = await getTasksFrom( taskFiles )
217+
return series( ...tasks )
218+
219+
}
220+
221+
async function parallelizeTasksFrom( taskFiles = [] ) {
222+
223+
const tasks = await getTasksFrom( taskFiles )
224+
return parallel( ...tasks )
225+
226+
}
227+
157228
///
158229

159230
function IndenterFactory( indentationChar = '\t', indentationLevel = 5 ) {
@@ -224,6 +295,11 @@ export {
224295

225296
createDirectoryIfNotExist,
226297
createFile,
298+
getFilesFrom,
299+
300+
getTasksFrom,
301+
serializeTasksFrom,
302+
parallelizeTasksFrom,
227303

228304
IndenterFactory as Indenter
229305
}

.tasks/configs/refresh.conf.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const tasksToIgnore = []
2+
3+
export { tasksToIgnore }
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { join } from 'path'
2+
import { packageRootDirectory } from '../_utils.mjs'
3+
4+
const runBenchmarksTaskFiles = [
5+
join( packageRootDirectory, '.tasks/.tests/benchmarks/run-benchmarks-for-backend.task.mjs' ),
6+
join( packageRootDirectory, '.tasks/.tests/benchmarks/run-benchmarks-for-frontend.task.mjs' )
7+
]
8+
9+
export { runBenchmarksTaskFiles }
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { join } from 'path'
2+
import { packageRootDirectory } from '../_utils.mjs'
3+
4+
const runUnitTestsTaskFiles = [
5+
join( packageRootDirectory, '.tasks/.tests/unit-tests/run-unit-tests-for-backend.task.mjs' ),
6+
join( packageRootDirectory, '.tasks/.tests/unit-tests/run-unit-tests-for-frontend.task.mjs' )
7+
]
8+
9+
export { runUnitTestsTaskFiles }

0 commit comments

Comments
 (0)