10000 Respect `preId` in `.npmrc` for release tags (#547) · JavaScriptExpert/np@aebd8ab · GitHub
[go: up one dir, main page]

Skip to content

Commit aebd8ab

Browse files
authored
Respect preId in .npmrc for release tags (sindresorhus#547)
1 parent 1f701cd commit aebd8ab

File tree

3 files changed

+43
-3
lines changed

3 files changed

+43
-3
lines changed

source/release-task-helper.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
'use strict';
22
const open = require('open');
33
const newGithubReleaseUrl = require('new-github-release-url');
4-
const {getTagVersionPrefix} = require('./util');
4+
const {getTagVersionPrefix, getPreReleasePrefix} = require('./util');
55
const version = require('./version');
66

77
module.exports = async (options, pkg) => {
88
const newVersion = version(pkg.version).getNewVersionFrom(options.version);
9-
const tag = await getTagVersionPrefix(options) + newVersion;
9+
let tag = await getTagVersionPrefix(options) + newVersion;
10+
const isPreRelease = version(options.version).isPrerelease();
11+
if (isPreRelease) {
12+
tag += await getPreReleasePrefix();
13+
}
1014

1115
const url = newGithubReleaseUrl({
1216
repoUrl: options.repoUrl,
1317
tag,
1418
body: options.releaseNotes(tag),
15-
isPrerelease: version(options.version).isPrerelease()
19+
isPrerelease: isPreRelease
1620
});
1721

1822
await open(url);

source/util.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,27 @@ exports.getTagVersionPrefix = pMemoize(async options => {
6868
return 'v';
6969
}
7070
});
71+
72+
exports.getPreReleasePrefix = pMemoize(async options => {
73+
ow(options, ow.object.hasKeys('yarn'));
74+
75+
try {
76+
if (options.yarn) {
77+
const {stdout} = await execa('yarn', ['config', 'get', 'preId']);
78+
if (stdout !== 'undefined') {
79+
return stdout;
80+
}
81+
82+
return '';
83+
}
84+
85+
const {stdout} = await execa('npm', ['config', 'get', 'preId']);
86+
if (stdout !== 'undefined') {
87+
return stdout;
88+
}
89+
90+
return '';
91+
} catch (_) {
92+
return '';
93+
}
94+
});

test/preid.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import test from 'ava';
2+
import {getPreReleasePrefix} from '../source/util';
3+
4+
test('get preId postfix', async t => {
5+
t.is(await getPreReleasePrefix({yarn: false}), '');
6+
t.is(await getPreReleasePrefix({yarn: true}), '');
7+
});
8+
9+
test('no options passed', async t => {
10+
await t.throwsAsync(getPreReleasePrefix(), {message: 'Expected `options` to be of type `object` but received type `undefined`'});
11+
await t.throwsAsync(getPreReleasePrefix({}), {message: 'Expected object `options` to have keys `["yarn"]`'});
12+
});

0 commit comments

Comments
 (0)
0