1 | #!/usr/bin/env node
|
2 |
|
3 | 'use strict'
|
4 |
|
5 | const debug = require('debug')('github-post-release')
|
6 | const amIaDependency = require('am-i-a-dependency')
|
7 | const isForced = process.argv.some(a => a === '--force')
|
8 |
|
9 | if (!amIaDependency() && !isForced) {
|
10 |
|
11 | debug('we are installing own dependencies')
|
12 | process.exit(0)
|
13 | }
|
14 |
|
15 | debug('installing this module as a dependency')
|
16 |
|
17 | const path = require('path')
|
18 | const fs = require('fs')
|
19 |
|
20 | function clientPackageJsonFilename () {
|
21 | return path.join(process.cwd(), '..', '..', 'package.json')
|
22 | }
|
23 |
|
24 | function alreadyInstalled () {
|
25 | const filename = clientPackageJsonFilename()
|
26 | const pkg = require(filename)
|
27 | if (!pkg.release) {
|
28 | return false
|
29 | }
|
30 | if (!pkg.release.generateNotes) {
|
31 | return false
|
32 | }
|
33 | return true
|
34 | }
|
35 |
|
36 | function addPlugin () {
|
37 | const filename = clientPackageJsonFilename()
|
38 | const pkg = require(filename)
|
39 | if (!pkg.release) {
|
40 | pkg.release = {}
|
41 | }
|
42 | pkg.release.generateNotes = 'github-post-release'
|
43 | const text = JSON.stringify(pkg, null, 2) + '\n'
|
44 | fs.writeFileSync(filename, text, 'utf8')
|
45 | console.log('✅ set generate notes plugin in', filename)
|
46 | }
|
47 |
|
48 | if (alreadyInstalled()) {
|
49 | debug('plugin generateNotes already set')
|
50 | process.exit(0)
|
51 | }
|
52 |
|
53 | console.log('⚠️ Installing release generateNotes plugin github-post-release')
|
54 | addPlugin()
|