Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit e11492d

Browse files
committed
feat: scaffold with integrated tests runner
1 parent 31e1a4b commit e11492d

File tree

12 files changed

+317
-120
lines changed

12 files changed

+317
-120
lines changed

package-lock.json

Lines changed: 240 additions & 66 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"cz-conventional-changelog": "^3.3.0",
3838
"del-cli": "^4.0.1",
3939
"doctoc": "^2.1.0",
40-
"eslint": "^8.12.0",
40+
"eslint": "^8.13.0",
4141
"eslint-config-prettier": "^8.5.0",
4242
"eslint-plugin-adonis": "^2.1.0",
4343
"eslint-plugin-prettier": "^4.0.0",
@@ -75,15 +75,16 @@
7575
"tag": "latest"
7676
},
7777
"dependencies": {
78-
"@adonisjs/application": "^5.2.1",
78+
"@adonisjs/application": "^5.2.3",
7979
"@adonisjs/sink": "^5.2.2",
8080
"@poppinss/prompts": "^2.0.2",
81-
"@poppinss/utils": "^4.0.3",
81+
"@poppinss/utils": "^4.0.4",
8282
"@types/fs-extra": "^9.0.13",
8383
"cli-width": "^3.0.0",
8484
"execa": "^5.1.1",
8585
"fs-extra": "^10.0.1",
86-
"getopts": "^2.3.0"
86+
"getopts": "^2.3.0",
87+
"gradient-string": "^2.0.0"
8788
},
8889
"repository": {
8990
"type": "git",

src/Chalk/art.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
* file that was distributed with this source code.
88
*/
99

10-
/* eslint-disable-next-line */
11-
const art =
12-
" _ _ _ _ \n / \\ __| | ___ _ __ (_)___ | |___ \n / _ \\ / _` |/ _ \\| '_ \\| / __|_ | / __|\n / ___ \\ (_| | (_) | | | | \\__ \\ |_| \\__ \\\n/_/ \\_\\__,_|\\___/|_| |_|_|___/\\___/|___/\n"
10+
import gradient from 'gradient-string'
1311

14-
export const showArt = () => console.log(art)
12+
const art = Buffer.from(
13+
'CiAgICAgXyAgICAgICBfICAgICAgICAgICAgIF8gICAgICAgICBfIF9fX18gIAogICAgLyBcICAgX198IHwgX19fICBfIF9fIChfKV9fXyAgICB8IC8gX19ffCAKICAgLyBfIFwgLyBfYCB8LyBfIFx8ICdfIFx8IC8gX198XyAgfCBcX19fIFwgCiAgLyBfX18gXCAoX3wgfCAoXykgfCB8IHwgfCBcX18gXCB8X3wgfF9fXykgfAogL18vICAgXF9cX18sX3xcX19fL3xffCB8X3xffF9fXy9cX19fL3xfX19fLyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg==',
14+
'base64'
15+
).toString()
16+
17+
export const showArt = () => console.log(gradient.pastel.multiline(art))

src/schematics/packages.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ export const packages: {
1616
} = {
1717
web: {
1818
'@adonisjs/core': {
19-
version: '^5.4.0',
19+
version: '^5.6.0',
2020
},
2121
'@adonisjs/repl': {
2222
version: '^3.1.0',
2323
},
2424
'@adonisjs/session': {
25-
version: '^6.1.0',
25+
version: '^6.2.0',
2626
},
2727
'@adonisjs/view': {
2828
version: '^6.1.0',
@@ -33,15 +33,15 @@ export const packages: {
3333
},
3434
api: {
3535
'@adonisjs/core': {
36-
version: '^5.4.0',
36+
version: '^5.6.0',
3737
},
3838
'@adonisjs/repl': {
3939
version: '^3.1.0',
4040
},
4141
},
4242
slim: {
4343
'@adonisjs/core': {
44-
version: '^5.4.0',
44+
version: '^5.6.0',
4545
},
4646
},
4747
}

tasks/ConfigureTests/index.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* adonis-ts-boilerplate
3+
*
4+
* (c) Harminder Virk <virk@adonisjs.com>
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
import execa from 'execa'
11+
import { TaskFn } from '../../src/contracts'
12+
13+
/**
14+
* Configure tests
15+
*/
16+
const task: TaskFn = async (_, logger, { absPath, debug }) => {
17+
let spinner: ReturnType<typeof logger.await> | undefined
18+
if (!debug) {
19+
spinner = logger.await('Configuring tests')
20+
}
21+
22+
try {
23+
await execa('node', ['ace', 'configure', 'tests'], {
24+
cwd: absPath,
25+
...(debug ? { stdio: 'inherit' } : {}),
26+
})
27+
spinner && spinner.stop()
28+
} catch (error) {
29+
spinner && spinner.stop()
30+
throw error
31+
}
32+
}
33+
34+
export default task

tasks/InstallDependencies/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ const task: TaskFn = async (_, logger, { pkg, client, boilerplate, debug }) => {
4141
/**
4242
* Required dev dependencies
4343
*/
44-
pkg.install('typescript', '~4.5')
44+
pkg.install('typescript', '~4.6')
4545
pkg.install('youch')
4646
pkg.install('youch-terminal')
4747
pkg.install('pino-pretty')
4848
pkg.install('adonis-preset-ts')
49-
pkg.install('@adonisjs/assembler', '^5.3.0')
49+
pkg.install('@adonisjs/assembler')
5050

5151
/**
5252
* Displaying a spinner, since install packages takes

tasks/Scaffold/setupEslint.ts

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,53 +7,38 @@
77
* file that was distributed with this source code.
88
*/
99

10-
import { files } from '@adonisjs/sink'
1110
import { TaskFn } from '../../src/contracts'
1211

1312
/**
1413
* Setup eslint inside the project
1514
*/
16-
const task: TaskFn = (_, logger, { absPath, prettier, eslint, pkg }) => {
15+
const task: TaskFn = (_, __, { prettier, eslint, pkg }) => {
1716
if (!eslint) {
1817
return
1918
}
2019

21-
/**
22-
* Create eslintRc file
23-
*/
24-
const eslintRc = new files.JsonFile(absPath, '.eslintrc.json')
25-
2620
/**
2721
* Setup config for prettier
2822
*/
2923
if (prettier) {
30-
eslintRc.set('extends', ['plugin:adonis/typescriptApp', 'prettier'])
31-
eslintRc.set('plugins', ['prettier'])
32-
eslintRc.set('rules', {
24+
pkg.set('eslintConfig.extends', ['plugin:adonis/typescriptApp', 'prettier'])
25+
pkg.set('eslintConfig.plugins', ['prettier'])
26+
pkg.set('eslintConfig.rules', {
3327
'prettier/prettier': ['error'],
3428
})
29+
pkg.set('eslintIgnore', ['build'])
3530
} else {
3631
// or setup without prettier
37-
eslintRc.set('extends', ['plugin:adonis/typescriptApp'])
32+
pkg.set('eslintConfig.extends', ['plugin:adonis/typescriptApp'])
33+
pkg.set('eslintIgnore', ['build'])
3834
}
3935

40-
eslintRc.commit()
41-
4236
/**
43-
* Create eslintIgnore file
44-
*/
45-
const eslintIgnore = new files.NewLineFile(absPath, '.eslintignore')
46-
eslintIgnore.add('build')
47-
eslintIgnore.commit()
48-
49-
/**
50-
* Setup package.json file
37+
* Install packages and configure lint script
5138
*/
5239
pkg.install('eslint')
5340
pkg.install('eslint-plugin-adonis')
5441
pkg.setScript('lint', 'eslint . --ext=.ts')
55-
56-
logger.action('create').succeeded('.eslintrc.json, .eslintignore')
5742
}
5843

5944
export default task

tasks/Scaffold/setupPrettier.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,33 +21,32 @@ const task: TaskFn = (_, logger, { absPath, prettier, eslint, pkg }) => {
2121
/**
2222
* Create prettierrc file
2323
*/
24-
const prettierRc = new files.JsonFile(absPath, '.prettierrc')
25-
prettierRc.set('trailingComma', 'es5')
26-
prettierRc.set('semi', false)
27-
prettierRc.set('singleQuote', true)
28-
prettierRc.set('useTabs', false)
29-
prettierRc.set('quoteProps', 'consistent')
30-
prettierRc.set('bracketSpacing', true)
31-
prettierRc.set('arrowParens', 'always')
32-
prettierRc.set('printWidth', 100)
33-
prettierRc.commit()
24+
pkg.set('prettier.trailingComma', 'es5')
25+
pkg.set('prettier.semi', false)
26+
pkg.set('prettier.singleQuote', true)
27+
pkg.set('prettier.useTabs', false)
28+
pkg.set('prettier.quoteProps', 'consistent')
29+
pkg.set('prettier.bracketSpacing', true)
30+
pkg.set('prettier.arrowParens', 'always')
31+
pkg.set('prettier.printWidth', 100)
32+
pkg.commit()
3433

3534
/**
3635
* Create prettier ignore file
3736
*/
3837
const prettierIgnore = new files.NewLineFile(absPath, '.prettierignore')
3938
prettierIgnore.add('build')
4039
prettierIgnore.commit()
40+
logger.action('create').succeeded('.prettierignore')
4141

4242
/**
43-
* Setup package.json file
43+
* Install prettier dependencies and register formatting
44+
* script
4445
*/
4546
pkg.install('prettier')
4647
pkg.install('eslint-config-prettier')
4748
pkg.install('eslint-plugin-prettier')
4849
pkg.setScript('format', 'prettier --write .')
49-
50-
logger.action('create').succeeded('.prettierrc, .prettierignore')
5150
}
5251

5352
export default task

tasks/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99

1010
import formatSource from './FormatSource'
11+
import configureTests from './ConfigureTests'
1112
import setupEslint from './Scaffold/setupEslint'
1213
import generateManifest from './GenerateManifest'
1314
import createRcFile from './Scaffold/createRcFile'
@@ -44,7 +45,7 @@ export const tasks = function ({ encore }: CliState) {
4445
},
4546
{
4647
title: 'Configure installed packages',
47-
actions: [configurePackages, generateManifest, formatSource],
48+
actions: [configurePackages, configureTests, generateManifest, formatSource],
4849
},
4950
...(encore
5051
? [

templates/api/env.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ export default Env.rules({
2020
APP_KEY: Env.schema.string(),
2121
APP_NAME: Env.schema.string(),
2222
DRIVE_DISK: Env.schema.enum(['local'] as const),
23-
NODE_ENV: Env.schema.enum(['development', 'production', 'testing'] as const),
23+
NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const),
2424
})

templates/slim/env.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ export default Env.rules({
2020
APP_KEY: Env.schema.string(),
2121
APP_NAME: Env.schema.string(),
2222
DRIVE_DISK: Env.schema.enum(['local'] as const),
23-
NODE_ENV: Env.schema.enum(['development', 'production', 'testing'] as const),
23+
NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const),
2424
})

templates/web/env.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ export default Env.rules({
2222
CACHE_VIEWS: Env.schema.boolean(),
2323
SESSION_DRIVER: Env.schema.string(),
2424
DRIVE_DISK: Env.schema.enum(['local'] as const),
25-
NODE_ENV: Env.schema.enum(['development', 'production', 'testing'] as const),
25+
NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const),
2626
})

0 commit comments

Comments
 (0)