relion 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/package.json +84 -73
  2. package/src/cli.js +6 -0
  3. package/src/commands.js +16 -30
  4. package/src/defaults.js +6 -14
  5. package/src/index.js +48 -125
  6. package/src/lib/checkpoint.js +10 -10
  7. package/src/lib/configuration.js +21 -21
  8. package/src/lib/detect-package-manager.js +21 -18
  9. package/src/lib/format-commit-message.js +2 -2
  10. package/src/lib/latest-semver-tag.js +17 -17
  11. package/src/lib/lifecycles/bump.js +99 -91
  12. package/src/lib/lifecycles/changelog.js +47 -46
  13. package/src/lib/lifecycles/commit.js +34 -34
  14. package/src/lib/lifecycles/tag.js +32 -30
  15. package/src/lib/print-error.js +4 -4
  16. package/src/lib/run-exec.js +13 -12
  17. package/src/lib/run-execFile.js +13 -12
  18. package/src/lib/run-lifecycle-script.js +11 -11
  19. package/src/lib/stringify-package.js +9 -9
  20. package/src/lib/updaters/index.js +57 -54
  21. package/src/lib/updaters/types/csproj.js +6 -6
  22. package/src/lib/updaters/types/gradle.js +7 -7
  23. package/src/lib/updaters/types/json.js +12 -12
  24. package/src/lib/updaters/types/maven.js +22 -22
  25. package/src/lib/updaters/types/openapi.js +8 -8
  26. package/src/lib/updaters/types/plain-text.js +3 -3
  27. package/src/lib/updaters/types/python.js +19 -19
  28. package/src/lib/updaters/types/yaml.js +8 -8
  29. package/src/lib/write-file.js +4 -4
  30. package/src/preset/constants.js +1 -1
  31. package/src/preset/index.js +8 -8
  32. package/src/preset/parser.js +2 -2
  33. package/src/preset/templates/index.js +8 -8
  34. package/src/preset/whatBump.js +14 -13
  35. package/src/preset/writer.js +19 -19
  36. package/CHANGELOG.md +0 -47
  37. package/bin/cli.js +0 -9
@@ -4,18 +4,19 @@
4
4
  * modified to support only detecting lock file and not detecting global package manager
5
5
  */
6
6
 
7
- import { promises as fs } from 'fs';
8
- import { resolve } from 'path';
7
+ import { promises as fs } from 'fs'
8
+ import { resolve } from 'path'
9
9
 
10
10
  /**
11
11
  * Check if a path exists
12
12
  */
13
13
  async function pathExists(p) {
14
14
  try {
15
- await fs.access(p);
16
- return true;
17
- } catch {
18
- return false;
15
+ await fs.access(p)
16
+ return true
17
+ }
18
+ catch {
19
+ return false
19
20
  }
20
21
  }
21
22
 
@@ -25,25 +26,27 @@ function getTypeofLockFile(cwd = '.') {
25
26
  pathExists(resolve(cwd, 'package-lock.json')),
26
27
  pathExists(resolve(cwd, 'pnpm-lock.yaml')),
27
28
  ]).then(([isYarn, isNpm, isPnpm]) => {
28
- let value = null;
29
+ let value = null
29
30
 
30
31
  if (isYarn) {
31
- value = 'yarn';
32
- } else if (isPnpm) {
33
- value = 'pnpm';
34
- } else if (isNpm) {
35
- value = 'npm';
32
+ value = 'yarn'
33
+ }
34
+ else if (isPnpm) {
35
+ value = 'pnpm'
36
+ }
37
+ else if (isNpm) {
38
+ value = 'npm'
36
39
  }
37
40
 
38
- return value;
39
- });
41
+ return value
42
+ })
40
43
  }
41
44
 
42
45
  export async function detectPMByLockFile(cwd) {
43
- const type = await getTypeofLockFile(cwd);
46
+ const type = await getTypeofLockFile(cwd)
44
47
  if (type) {
45
- return type;
48
+ return type
46
49
  }
47
50
 
48
- return 'npm';
49
- }
51
+ return 'npm'
52
+ }
@@ -1,4 +1,4 @@
1
1
  export default function (args) {
2
- const message = String(args.preset.releaseCommitMessageFormat);
2
+ const message = String(args.preset.releaseCommitMessageFormat)
3
3
  return message.replace(/{{currentTag}}/g, args.tagPrefix + args.context.version)
4
- }
4
+ }
@@ -1,34 +1,34 @@
1
- import * as gitSemverTags from 'git-semver-tags';
2
- import semver from 'semver';
1
+ import * as gitSemverTags from 'git-semver-tags'
2
+ import semver from 'semver'
3
3
 
4
4
  export default function ({ tagPrefix, prerelease }) {
5
5
  return new Promise((resolve, reject) => {
6
6
  gitSemverTags({ tagPrefix }, function (err, tags) {
7
- if (err) return reject(err);
8
- else if (!tags.length) return resolve('1.0.0');
7
+ if (err) return reject(err)
8
+ else if (!tags.length) return resolve('1.0.0')
9
9
  // Respect tagPrefix
10
- tags = tags.map((tag) => tag.replace(new RegExp('^' + tagPrefix), ''));
10
+ tags = tags.map(tag => tag.replace(new RegExp('^' + tagPrefix), ''))
11
11
  if (prerelease) {
12
12
  // ignore any other prelease tags
13
13
  tags = tags.filter((tag) => {
14
- if (!semver.valid(tag)) return false;
14
+ if (!semver.valid(tag)) return false
15
15
  if (!semver.prerelease(tag)) {
16
16
  // include all non-prerelease versions
17
- return true;
17
+ return true
18
18
  }
19
19
  // check if the name of the prerelease matches the one we are looking for
20
20
  if (semver.prerelease(tag)[0] === prerelease) {
21
- return true;
21
+ return true
22
22
  }
23
- return false;
24
- });
23
+ return false
24
+ })
25
25
  }
26
26
  // ensure that the largest semver tag is at the head.
27
27
  tags = tags.map((tag) => {
28
- return semver.clean(tag);
29
- });
30
- tags.sort(semver.rcompare);
31
- return resolve(tags[0]);
32
- });
33
- });
34
- }
28
+ return semver.clean(tag)
29
+ })
30
+ tags.sort(semver.rcompare)
31
+ return resolve(tags[0])
32
+ })
33
+ })
34
+ }
@@ -1,41 +1,41 @@
1
- import checkpoint from '../checkpoint.js';
2
- import { Bumper } from 'conventional-recommended-bump';
3
- import fs from 'fs';
4
- import DotGitignore from 'dotgitignore';
5
- import path from 'path';
6
- import runLifecycleScript from '../run-lifecycle-script.js';
7
- import semver from 'semver';
8
- import writeFile from '../write-file.js';
9
- import { resolveUpdaterObjectFromArgument } from '../updaters/index.js';
10
- let configsToUpdate = {};
11
- const sanitizeQuotesRegex = /['"]+/g;
1
+ import checkpoint from '../checkpoint.js'
2
+ import { Bumper } from 'conventional-recommended-bump'
3
+ import fs from 'fs'
4
+ import DotGitignore from 'dotgitignore'
5
+ import path from 'path'
6
+ import runLifecycleScript from '../run-lifecycle-script.js'
7
+ import semver from 'semver'
8
+ import writeFile from '../write-file.js'
9
+ import { resolveUpdaterObjectFromArgument } from '../updaters/index.js'
10
+ let configsToUpdate = {}
11
+ const sanitizeQuotesRegex = /['"]+/g
12
12
 
13
13
  async function Bump(args, newVersion) {
14
14
  // reset the cache of updated config files each
15
15
  // time we perform the version bump step.
16
- configsToUpdate = {};
16
+ configsToUpdate = {}
17
17
 
18
18
  if (
19
- args.releaseAs &&
20
- !(['major', 'minor', 'patch'].includes(args.releaseAs.toLowerCase()) || semver.valid(args.releaseAs))
19
+ args.releaseAs
20
+ && !(['major', 'minor', 'patch'].includes(args.releaseAs.toLowerCase()) || semver.valid(args.releaseAs))
21
21
  ) {
22
- throw new Error("releaseAs must be one of 'major', 'minor' or 'patch', or a valid semvar version.");
22
+ throw new Error('releaseAs must be one of \'major\', \'minor\' or \'patch\', or a valid semvar version.')
23
23
  }
24
24
 
25
- await runLifecycleScript(args, 'prerelease');
26
- const stdout = await runLifecycleScript(args, 'prebump');
25
+ await runLifecycleScript(args, 'prerelease')
26
+ const stdout = await runLifecycleScript(args, 'prebump')
27
27
  if (stdout?.trim().length) {
28
- const prebumpString = stdout.trim().replace(sanitizeQuotesRegex, '');
29
- if (semver.valid(prebumpString)) args.releaseAs = prebumpString;
28
+ const prebumpString = stdout.trim().replace(sanitizeQuotesRegex, '')
29
+ if (semver.valid(prebumpString)) args.releaseAs = prebumpString
30
30
  }
31
- updateConfigs(args, newVersion);
32
- await runLifecycleScript(args, 'postbump');
33
- return newVersion;
31
+ updateConfigs(args, newVersion)
32
+ await runLifecycleScript(args, 'postbump')
33
+ return newVersion
34
34
  }
35
35
 
36
36
  Bump.getUpdatedConfigs = function () {
37
- return configsToUpdate;
38
- };
37
+ return configsToUpdate
38
+ }
39
39
 
40
40
  /**
41
41
  * Get the new version number
@@ -44,43 +44,47 @@ Bump.getUpdatedConfigs = function () {
44
44
  * @returns Promise<string>
45
45
  */
46
46
  export async function getNewVersion(args, version) {
47
- let newVersion = version;
47
+ let newVersion = version
48
48
  if (semver.valid(args.releaseAs)) {
49
- const releaseAs = new semver.SemVer(args.releaseAs);
49
+ const releaseAs = new semver.SemVer(args.releaseAs)
50
50
  if (
51
- isString(args.prerelease) &&
52
- releaseAs.prerelease.length &&
53
- releaseAs.prerelease.slice(0, -1).join('.') !== args.prerelease
51
+ isString(args.prerelease)
52
+ && releaseAs.prerelease.length
53
+ && releaseAs.prerelease.slice(0, -1).join('.') !== args.prerelease
54
54
  ) {
55
55
  // If both releaseAs and the prerelease identifier are supplied, they must match. The behavior
56
56
  // for a mismatch is undefined, so error out instead.
57
- throw new Error('releaseAs and prerelease have conflicting prerelease identifiers');
58
- } else if (isString(args.prerelease) && releaseAs.prerelease.length) {
59
- newVersion = releaseAs.version;
60
- } else if (isString(args.prerelease)) {
61
- newVersion = `${releaseAs.major}.${releaseAs.minor}.${releaseAs.patch}-${args.prerelease}.0`;
62
- } else {
63
- newVersion = releaseAs.version;
57
+ throw new Error('releaseAs and prerelease have conflicting prerelease identifiers')
58
+ }
59
+ else if (isString(args.prerelease) && releaseAs.prerelease.length) {
60
+ newVersion = releaseAs.version
61
+ }
62
+ else if (isString(args.prerelease)) {
63
+ newVersion = `${releaseAs.major}.${releaseAs.minor}.${releaseAs.patch}-${args.prerelease}.0`
64
+ }
65
+ else {
66
+ newVersion = releaseAs.version
64
67
  }
65
68
 
66
69
  // Check if the previous version is the same version and prerelease, and increment if so
67
70
  if (
68
- isString(args.prerelease) &&
69
- ['prerelease', null].includes(semver.diff(version, newVersion)) &&
70
- semver.lte(newVersion, version)
71
+ isString(args.prerelease)
72
+ && ['prerelease', null].includes(semver.diff(version, newVersion))
73
+ && semver.lte(newVersion, version)
71
74
  ) {
72
- newVersion = semver.inc(version, 'prerelease', args.prerelease);
75
+ newVersion = semver.inc(version, 'prerelease', args.prerelease)
73
76
  }
74
77
 
75
78
  // Append any build info from releaseAs
76
- newVersion = semvarToVersionStr(newVersion, releaseAs.build);
77
- } else {
78
- const release = await bumpVersion(args.releaseAs, version, args);
79
- const releaseType = getReleaseType(args.prerelease, release.releaseType, version);
79
+ newVersion = semvarToVersionStr(newVersion, releaseAs.build)
80
+ }
81
+ else {
82
+ const release = await bumpVersion(args.releaseAs, version, args)
83
+ const releaseType = getReleaseType(args.prerelease, release.releaseType, version)
80
84
 
81
- newVersion = semver.inc(version, releaseType, args.prerelease);
85
+ newVersion = semver.inc(version, releaseType, args.prerelease)
82
86
  }
83
- return newVersion;
87
+ return newVersion
84
88
  }
85
89
 
86
90
  /**
@@ -90,28 +94,29 @@ export async function getNewVersion(args, version) {
90
94
  * @returns {string}
91
95
  */
92
96
  function semvarToVersionStr(semverVersion, semverBuild) {
93
- return [semverVersion, semverBuild.join('.')].filter(Boolean).join('+');
97
+ return [semverVersion, semverBuild.join('.')].filter(Boolean).join('+')
94
98
  }
95
99
 
96
100
  function getReleaseType(prerelease, expectedReleaseType, currentVersion) {
97
101
  if (isString(prerelease)) {
98
102
  if (isInPrerelease(currentVersion)) {
99
103
  if (
100
- shouldContinuePrerelease(currentVersion, expectedReleaseType) ||
101
- getTypePriority(getCurrentActiveType(currentVersion)) > getTypePriority(expectedReleaseType)
104
+ shouldContinuePrerelease(currentVersion, expectedReleaseType)
105
+ || getTypePriority(getCurrentActiveType(currentVersion)) > getTypePriority(expectedReleaseType)
102
106
  ) {
103
- return 'prerelease';
107
+ return 'prerelease'
104
108
  }
105
109
  }
106
110
 
107
- return 'pre' + expectedReleaseType;
108
- } else {
109
- return expectedReleaseType;
111
+ return 'pre' + expectedReleaseType
112
+ }
113
+ else {
114
+ return expectedReleaseType
110
115
  }
111
116
  }
112
117
 
113
118
  function isString(val) {
114
- return typeof val === 'string';
119
+ return typeof val === 'string'
115
120
  }
116
121
 
117
122
  /**
@@ -124,14 +129,14 @@ function isString(val) {
124
129
  * @return {boolean}
125
130
  */
126
131
  function shouldContinuePrerelease(version, expectType) {
127
- return getCurrentActiveType(version) === expectType;
132
+ return getCurrentActiveType(version) === expectType
128
133
  }
129
134
 
130
135
  function isInPrerelease(version) {
131
- return Array.isArray(semver.prerelease(version));
136
+ return Array.isArray(semver.prerelease(version))
132
137
  }
133
138
 
134
- const TypeList = ['major', 'minor', 'patch'].reverse();
139
+ const TypeList = ['major', 'minor', 'patch'].reverse()
135
140
 
136
141
  /**
137
142
  * extract the in-pre-release type in target version
@@ -140,10 +145,10 @@ const TypeList = ['major', 'minor', 'patch'].reverse();
140
145
  * @return {string}
141
146
  */
142
147
  function getCurrentActiveType(version) {
143
- const typelist = TypeList;
148
+ const typelist = TypeList
144
149
  for (let i = 0; i < typelist.length; i++) {
145
150
  if (semver[typelist[i]](version)) {
146
- return typelist[i];
151
+ return typelist[i]
147
152
  }
148
153
  }
149
154
  }
@@ -156,37 +161,39 @@ function getCurrentActiveType(version) {
156
161
  * @return {number}
157
162
  */
158
163
  function getTypePriority(type) {
159
- return TypeList.indexOf(type);
164
+ return TypeList.indexOf(type)
160
165
  }
161
166
 
162
167
  async function bumpVersion(releaseAs, currentVersion, args) {
163
168
  if (releaseAs) {
164
169
  return {
165
170
  releaseType: releaseAs,
166
- };
167
- } else {
168
- const recommendation = await getRecommendedBump(args, currentVersion);
171
+ }
172
+ }
173
+ else {
174
+ const recommendation = await getRecommendedBump(args, currentVersion)
169
175
  if (recommendation) {
170
- return recommendation;
171
- } else {
172
- throw new Error('No recommendation found');
176
+ return recommendation
177
+ }
178
+ else {
179
+ throw new Error('No recommendation found')
173
180
  }
174
181
  }
175
182
  }
176
183
 
177
184
  async function getRecommendedBump(args, currentVersion) {
178
- const bumper = new Bumper(args.path);
185
+ const bumper = new Bumper(args.path)
179
186
  bumper.loadPreset({
180
187
  preMajor: semver.lt(currentVersion, '1.0.0'),
181
188
  ...args.preset,
182
- });
189
+ })
183
190
  bumper.tag({
184
191
  tagPrefix: args.tagPrefix,
185
192
  lernaPackage: args.lernaPackage,
186
- });
187
- bumper.commits({}, args.parserOpts);
188
- const recommendation = await bumper.bump();
189
- return recommendation;
193
+ })
194
+ bumper.commits({}, args.parserOpts)
195
+ const recommendation = await bumper.bump()
196
+ return recommendation
190
197
  }
191
198
 
192
199
  /**
@@ -196,39 +203,40 @@ async function getRecommendedBump(args, currentVersion) {
196
203
  * @return void
197
204
  */
198
205
  function updateConfigs(args, newVersion) {
199
- const dotgit = DotGitignore();
206
+ const dotgit = DotGitignore()
200
207
  args.bumpFiles.forEach(async function (bumpFile) {
201
- const updater = await resolveUpdaterObjectFromArgument(bumpFile);
208
+ const updater = await resolveUpdaterObjectFromArgument(bumpFile)
202
209
  if (!updater) {
203
- return;
210
+ return
204
211
  }
205
- const configPath = path.resolve(process.cwd(), updater.filename);
212
+ const configPath = path.resolve(process.cwd(), updater.filename)
206
213
  try {
207
214
  if (dotgit.ignore(updater.filename)) {
208
- console.debug(`Not updating file '${updater.filename}', as it is ignored in Git`);
209
- return;
215
+ console.debug(`Not updating file '${updater.filename}', as it is ignored in Git`)
216
+ return
210
217
  }
211
- const stat = fs.lstatSync(configPath);
218
+ const stat = fs.lstatSync(configPath)
212
219
 
213
220
  if (!stat.isFile()) {
214
- console.debug(`Not updating '${updater.filename}', as it is not a file`);
215
- return;
221
+ console.debug(`Not updating '${updater.filename}', as it is not a file`)
222
+ return
216
223
  }
217
- const contents = fs.readFileSync(configPath, 'utf8');
218
- const newContents = updater.updater.writeVersion(contents, newVersion);
219
- const realNewVersion = updater.updater.readVersion(newContents);
224
+ const contents = fs.readFileSync(configPath, 'utf8')
225
+ const newContents = updater.updater.writeVersion(contents, newVersion)
226
+ const realNewVersion = updater.updater.readVersion(newContents)
220
227
  checkpoint(args, 'bumping version in ' + updater.filename + ' from %s to %s', [
221
228
  updater.updater.readVersion(contents),
222
229
  realNewVersion,
223
- ]);
224
- writeFile(args, configPath, newContents);
230
+ ])
231
+ writeFile(args, configPath, newContents)
225
232
  // flag any config files that we modify the version # for
226
233
  // as having been updated.
227
- configsToUpdate[updater.filename] = true;
228
- } catch (err) {
229
- if (err.code !== 'ENOENT') console.warn(err.message);
234
+ configsToUpdate[updater.filename] = true
235
+ }
236
+ catch (err) {
237
+ if (err.code !== 'ENOENT') console.warn(err.message)
230
238
  }
231
- });
239
+ })
232
240
  }
233
241
 
234
- export default Bump;
242
+ export default Bump
@@ -1,57 +1,57 @@
1
- import chalk from 'chalk';
2
- import checkpoint from '../checkpoint.js';
3
- import conventionalChangelog from 'conventional-changelog';
4
- import fs from 'fs';
5
- import runLifecycleScript from '../run-lifecycle-script.js';
6
- import writeFile from '../write-file.js';
7
- const START_OF_LAST_RELEASE_PATTERN = /(^#.*?[0-9]+\.[0-9]+\.[0-9]+|<a name=)/m;
1
+ import chalk from 'chalk'
2
+ import checkpoint from '../checkpoint.js'
3
+ import conventionalChangelog from 'conventional-changelog'
4
+ import fs from 'fs'
5
+ import runLifecycleScript from '../run-lifecycle-script.js'
6
+ import writeFile from '../write-file.js'
7
+ const START_OF_LAST_RELEASE_PATTERN = /(^#.*?[0-9]+\.[0-9]+\.[0-9]+|<a name=)/m
8
8
 
9
9
  async function Changelog(args, newVersion) {
10
- await runLifecycleScript(args, 'prechangelog');
11
- await outputChangelog(args, newVersion);
12
- await runLifecycleScript(args, 'postchangelog');
10
+ await runLifecycleScript(args, 'prechangelog')
11
+ await outputChangelog(args, newVersion)
12
+ await runLifecycleScript(args, 'postchangelog')
13
13
  }
14
14
 
15
- Changelog.START_OF_LAST_RELEASE_PATTERN = START_OF_LAST_RELEASE_PATTERN;
15
+ Changelog.START_OF_LAST_RELEASE_PATTERN = START_OF_LAST_RELEASE_PATTERN
16
16
 
17
- export default Changelog;
17
+ export default Changelog
18
18
 
19
19
  /**
20
20
  * Front matter is only extracted and therefore retained in final output where Changelog "header" begins with #Changelog,
21
21
  * e.g. meets Standard-Version (last release) or relion(current) format
22
22
  */
23
23
  function extractFrontMatter(oldContent) {
24
- const headerStart = oldContent.indexOf('# Changelog');
24
+ const headerStart = oldContent.indexOf('# Changelog')
25
25
  return headerStart !== -1 || headerStart !== 0
26
26
  ? oldContent.substring(0, headerStart)
27
- : '';
27
+ : ''
28
28
  }
29
29
 
30
30
  /**
31
31
  * find the position of the last release and remove header
32
32
  */
33
33
  function extractChangelogBody(oldContent) {
34
- const oldContentStart = oldContent.search(START_OF_LAST_RELEASE_PATTERN);
34
+ const oldContentStart = oldContent.search(START_OF_LAST_RELEASE_PATTERN)
35
35
  return oldContentStart !== -1
36
36
  ? oldContent.substring(oldContentStart)
37
- : oldContent;
37
+ : oldContent
38
38
  }
39
39
 
40
- function outputChangelog(args, newVersion) {
40
+ function outputChangelog(args) {
41
41
  return new Promise((resolve, reject) => {
42
- createIfMissing(args);
43
- const header = args.preset.header;
42
+ createIfMissing(args)
43
+ const header = args.preset.header
44
44
 
45
- const oldContent =
46
- args.dryRun || args.releaseCount === 0
45
+ const oldContent
46
+ = args.dryRun || args.releaseCount === 0
47
47
  ? ''
48
- : fs.readFileSync(args.infile, 'utf-8');
48
+ : fs.readFileSync(args.infile, 'utf-8')
49
49
 
50
- const oldContentBody = extractChangelogBody(oldContent);
50
+ const oldContentBody = extractChangelogBody(oldContent)
51
51
 
52
- const changelogFrontMatter = extractFrontMatter(oldContent);
52
+ const changelogFrontMatter = extractFrontMatter(oldContent)
53
53
 
54
- let content = '';
54
+ let content = ''
55
55
  const changelogStream = conventionalChangelog(
56
56
  {
57
57
  preset: args.preset,
@@ -59,8 +59,8 @@ function outputChangelog(args, newVersion) {
59
59
  releaseCount: args.releaseCount,
60
60
  ...(args.verbose
61
61
  ? {
62
- debug: console.info.bind(console, 'conventional-recommended-bump'),
63
- }
62
+ debug: console.info.bind(console, 'conventional-recommended-bump'),
63
+ }
64
64
  : {}),
65
65
  },
66
66
  args.context,
@@ -68,38 +68,39 @@ function outputChangelog(args, newVersion) {
68
68
  args.parserOpts,
69
69
  args.writerOpts,
70
70
  ).on('error', function (err) {
71
- return reject(err);
72
- });
71
+ return reject(err)
72
+ })
73
73
 
74
74
  changelogStream.on('data', function (buffer) {
75
- content += buffer.toString();
76
- });
75
+ content += buffer.toString()
76
+ })
77
77
 
78
78
  changelogStream.on('end', function () {
79
- checkpoint(args, 'outputting changes to %s', [args.infile]);
79
+ checkpoint(args, 'outputting changes to %s', [args.infile])
80
80
  if (args.dryRun)
81
- console.info(`\n---\n${chalk.gray(content.trim())}\n---\n`);
81
+ console.info(`\n---\n${chalk.gray(content.trim())}\n---\n`)
82
82
  else
83
83
  writeFile(
84
84
  args,
85
85
  args.infile,
86
- changelogFrontMatter +
87
- header +
88
- (content + oldContentBody).replace(/\n+$/, '\n'),
89
- );
90
- return resolve();
91
- });
92
- });
86
+ changelogFrontMatter
87
+ + header
88
+ + (content + oldContentBody).replace(/\n+$/, '\n'),
89
+ )
90
+ return resolve()
91
+ })
92
+ })
93
93
  }
94
94
 
95
95
  function createIfMissing(args) {
96
96
  try {
97
- fs.accessSync(args.infile, fs.F_OK);
98
- } catch (err) {
97
+ fs.accessSync(args.infile, fs.F_OK)
98
+ }
99
+ catch (err) {
99
100
  if (err.code === 'ENOENT') {
100
- checkpoint(args, 'created %s', [args.infile]);
101
- args.outputUnreleased = true;
102
- writeFile(args, args.infile, '\n');
101
+ checkpoint(args, 'created %s', [args.infile])
102
+ args.outputUnreleased = true
103
+ writeFile(args, args.infile, '\n')
103
104
  }
104
105
  }
105
- }
106
+ }