const fs = require('fs') const ghRelease = require('gh-release') const token = require('./githubToken') const pkg = require('../../package.json') const { jp } = require('./index') const changeLog = fs.readFileSync(jp('../changeLog.md'), 'utf-8') const assetsDir = '../assets' const getBuildFiles = () => { const files = [] const pathRegExp = [ /latest\.yml$/, /\.exe$/, /\.blockmap$/, ] const names = fs.readdirSync(jp(assetsDir), 'utf8') names.forEach(name => { pathRegExp.forEach(regexp => { if (regexp.test(name)) files.push(jp(assetsDir, name)) }) }) return files } // all options have defaults and can be omitted const options = { tag_name: `v${pkg.version}`, target_commitish: 'master', name: `v${pkg.version}`, body: changeLog, draft: false, prerelease: false, repo: pkg.name, owner: pkg.author, endpoint: 'https://api.github.com', // for GitHub enterprise, use http(s)://hostname/api/v3 auth: { token, }, assets: getBuildFiles(), } module.exports = ({ isDraft = false, isPrerelease = false, target_commitish = 'master' }) => new Promise((resolve, reject) => { options.target_commitish = target_commitish options.draft = isDraft options.prerelease = isPrerelease ghRelease(options, function(err, result) { if (err) return reject(err) resolve(result) console.log(result) // create release response: https://developer.github.com/v3/repos/releases/#response-4 }) })