diff --git a/package.json b/package.json index 7f6dbd2b..4be65a27 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,6 @@ "listr-input": "^0.1.3", "log-symbols": "^2.1.0", "meow": "^5.0.0", - "new-github-release-url": "^0.1.0", "npm-name": "^5.0.1", "opn": "^5.4.0", "ow": "^0.10.0", diff --git a/source/new-github-release-url.js b/source/new-github-release-url.js new file mode 100644 index 00000000..84d46a60 --- /dev/null +++ b/source/new-github-release-url.js @@ -0,0 +1,39 @@ +// TODO: Remove this file and depend on `new-github-release-url` when we target Node.js 10 +'use strict'; +const {URL} = require('url'); + +module.exports = (options = {}) => { + let repoUrl; + if (options.repoUrl) { + repoUrl = options.repoUrl; + } else if (options.user && options.repo) { + repoUrl = `https://github.com/${options.user}/${options.repo}`; + } else { + throw new Error('You need to specify either the `repoUrl` option or both the `user` and `repo` options'); + } + + const url = new URL(`${repoUrl}/releases/new`); + + const types = [ + 'tag', + 'target', + 'title', + 'body', + 'isPrerelease' + ]; + + for (let type of types) { + const value = options[type]; + if (value === undefined) { + continue; + } + + if (type === 'isPrerelease') { + type = 'prerelease'; + } + + url.searchParams.set(type, value); + } + + return url.toString(); +}; diff --git a/source/release-task-helper.js b/source/release-task-helper.js index ab69ec3f..27c6a507 100644 --- a/source/release-task-helper.js +++ b/source/release-task-helper.js @@ -1,6 +1,6 @@ 'use strict'; -const newGithubReleaseUrl = require('new-github-release-url'); const opn = require('opn'); +const newGithubReleaseUrl = require('./new-github-release-url'); const {getTagVersionPrefix} = require('./util'); const version = require('./version');