const childProcess = require('child_process');
const core = require('@actions/core');
const { getVersion, isBeta } = require('./version-helper');
const version = getVersion();
const beta = isBeta();
const ci = process.argv.includes('ci');
const envs = {
VERSION: version,
RELEASE_NAME: [
beta && 'BETA',
`v${version}`,
].filter(Boolean).join(' '),
RELEASE_PREFIX: [
'Violentmonkey',
beta && 'beta',
].filter(Boolean).join('-'),
PRERELEASE: !!beta,
TEMP_DIR: 'tmp',
ASSETS_DIR: 'dist-assets',
GIT_DESCRIBE: ci && exec('git describe --abbrev=7')
|| `v${version}-${exec('git rev-parse HEAD').slice(0, 7)}`,
};
envs.ASSET_ZIP = `${envs.RELEASE_PREFIX}-webext-v${envs.VERSION}.zip`;
envs.ASSET_SELF_HOSTED_ZIP = `${envs.RELEASE_PREFIX}-webext-ffself-v${envs.VERSION}.zip`;
envs.RELEASE_NOTE = beta && !ci ? `\
**This is a beta release of Violentmonkey (also in [WebStore](\
https://chrome.google.com/webstore/detail/violentmonkey-beta/opokoaglpekkimldnlggpoagmjegichg\
)), use it at your own risk.**
\
If you already use Violentmonkey, click \`Export to zip\` in settings before installing the beta.
Notable changes:
${listCommits()}
` : `\
See for more details.
`;
Object.entries(envs).forEach(([key, value]) => {
core.exportVariable(key, value);
});
function listCommits() {
const thisTag = exec('git describe --abbrev=0 --tags');
const prevTag = exec(`git describe --abbrev=0 --tags "${thisTag}^"`);
return exec(`git log --oneline --skip=1 --reverse "${prevTag}...${thisTag}"`)
.split('\n')
.map((str, i) => `${str.split(/\s/, 2)[1]}${10000 + i}\n* ${str}`)
.sort()
.map(str => str.split('\n')[1])
.join('\n');
}
function exec(cmd) {
try {
return childProcess.execSync(cmd, { encoding: 'utf8' }).trim();
} catch (e) {
// ignore
}
}