1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | const { join } = require('path')
|
11 | const { chmodSync } = require('fs')
|
12 | const { execSync } = require('child_process')
|
13 | const { packageJson, install, template, lines } = require('mrm-core')
|
14 |
|
15 | const prTemplate = '.github/COMMIT_CONVENTION.md'
|
16 |
|
17 | function task () {
|
18 | const pkgFile = packageJson()
|
19 |
|
20 | |
21 |
|
22 |
|
23 | pkgFile.setScript('commit', 'git-cz')
|
24 | pkgFile.set('config.commitizen.path', 'cz-conventional-changelog')
|
25 |
|
26 | |
27 |
|
28 |
|
29 | pkgFile.save()
|
30 |
|
31 | |
32 |
|
33 |
|
34 | install(['cz-conventional-changelog', 'commitizen', 'husky'])
|
35 |
|
36 | |
37 |
|
38 |
|
39 | execSync('npx husky install')
|
40 |
|
41 | |
42 |
|
43 |
|
44 | const commitFile = lines('.husky/commit-msg')
|
45 | .add('#!/bin/sh')
|
46 | .add('. "$(dirname "$0")/_/husky.sh"')
|
47 | .add('HUSKY_GIT_PARAMS=$1 node ./node_modules/@adonisjs/mrm-preset/validate-commit/conventional/validate.js')
|
48 |
|
49 | const fileAlreadyExists = commitFile.exists()
|
50 | commitFile.save()
|
51 |
|
52 | |
53 |
|
54 |
|
55 | if (!fileAlreadyExists) {
|
56 | chmodSync(join(process.cwd(), '.husky/commit-msg'), 0o0755)
|
57 | }
|
58 |
|
59 | |
60 |
|
61 |
|
62 | pkgFile.unset(
|
63 | 'husky.hooks.commit-msg',
|
64 | 'node ./node_modules/@adonisjs/mrm-preset/validateCommit/conventional/validate.js'
|
65 | )
|
66 |
|
67 | |
68 |
|
69 |
|
70 | template(prTemplate, join(__dirname, 'conventional', 'template.md')).apply({}).save()
|
71 | }
|
72 |
|
73 | task.description = 'Enforces commit message convention'
|
74 | module.exports = task
|