91 lines
3.0 KiB
JavaScript
91 lines
3.0 KiB
JavaScript
const GITHUB_TOKEN = process.env.GITHUB_TOKEN
|
|
const request = require('request-promise')
|
|
const VERSION = require('../dist/chrome/manifest.json').version
|
|
const fs = require('fs')
|
|
|
|
publishRelease().then(function () {
|
|
console.log('Published')
|
|
})
|
|
|
|
/**
|
|
* Creates release. Adds tag from the current commit, current version is used as part of the tag name.
|
|
* Then uploads assets that were created while building.
|
|
* @returns {Promise.<void>}
|
|
*/
|
|
async function publishRelease () {
|
|
const CIRCLE_SHA1 = process.env.CIRCLE_SHA1
|
|
console.log(`VERSION: ${VERSION}, CIRCLE_SHA1: ${CIRCLE_SHA1}`)
|
|
let releaseId
|
|
const CREATE_RELEASE_URI = `https://api.github.com/repos/poanetwork/nifty-wallet/releases`
|
|
console.log(`CREATE_RELEASE_URI: ${CREATE_RELEASE_URI}`)
|
|
let changelog = ''
|
|
try {
|
|
changelog = fs.readFileSync('./CHANGELOG.md').toString().split(VERSION)[1].split('##')[0].trim()
|
|
} catch (err) {
|
|
console.error(`Error in getting changelog: ${err}`)
|
|
}
|
|
// remove first line with date
|
|
const newLineIndex = changelog.indexOf('\n')
|
|
let changes = 'New release is ready.'
|
|
if (newLineIndex !== -1) {
|
|
changes = changelog.slice(newLineIndex + 1)
|
|
}
|
|
console.log(`changes: ${changes}`)
|
|
|
|
request({
|
|
method: 'POST',
|
|
uri: CREATE_RELEASE_URI,
|
|
headers: {
|
|
'User-Agent': 'Nifty Wallet',
|
|
'Authorization': `token ${GITHUB_TOKEN}`,
|
|
},
|
|
body: JSON.stringify({
|
|
body: changes,
|
|
tag_name: `v${VERSION}`,
|
|
name: `Version ${VERSION}`,
|
|
target_commitish: CIRCLE_SHA1,
|
|
draft: true,
|
|
}),
|
|
}).then(async function (response) {
|
|
console.log('response: ' + response)
|
|
releaseId = JSON.parse(response).id
|
|
console.log(`releaseId: ${releaseId}`)
|
|
|
|
return uploadAsset(`./builds/niftywallet-chrome-${VERSION}.zip`, `niftywallet-chrome-${VERSION}.zip`, releaseId)
|
|
.then(() => {
|
|
return uploadAsset(`./builds/niftywallet-firefox-${VERSION}.zip`, `niftywallet-firefox-${VERSION}.zip`, releaseId)
|
|
})
|
|
.then(() => {
|
|
return uploadAsset(`./builds/niftywallet-edge-${VERSION}.zip`, `niftywallet-edge-${VERSION}.zip`, releaseId)
|
|
})
|
|
.then(() => {
|
|
return uploadAsset(`./builds/niftywallet-opera-${VERSION}.zip`, `niftywallet-opera-${VERSION}.zip`, releaseId)
|
|
})
|
|
}).catch(function (err) {
|
|
console.error('error in request:' + err)
|
|
throw err
|
|
})
|
|
}
|
|
|
|
/**
|
|
* Uploads asset to the created release
|
|
* @param path - where file is located
|
|
* @param name - will be displayed on the release page
|
|
* @param releaseId - id or the release obtained after release creation
|
|
* @returns {Promise.<*>}
|
|
*/
|
|
async function uploadAsset (path, name, releaseId) {
|
|
const UPLOAD_ASSET_URL = `https://uploads.github.com/repos/poanetwork/nifty-wallet/releases/${releaseId}/assets?name=${name}&label=${name}`
|
|
console.log(`UPLOAD_ASSET_URL: ${UPLOAD_ASSET_URL}`)
|
|
return request({
|
|
method: 'POST',
|
|
uri: UPLOAD_ASSET_URL,
|
|
body: fs.readFileSync(path),
|
|
headers: {
|
|
'Authorization': `token ${GITHUB_TOKEN}`,
|
|
'Content-Type': 'application/zip',
|
|
'User-Agent': 'Nifty Wallet',
|
|
},
|
|
})
|
|
}
|