action-helper.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const childProcess = require('child_process');
  2. const core = require('@actions/core');
  3. const { getVersion, isBeta } = require('./version-helper');
  4. const version = getVersion();
  5. const beta = isBeta();
  6. const ci = process.argv.includes('ci');
  7. const envs = {
  8. VERSION: version,
  9. RELEASE_NAME: [
  10. beta && 'BETA',
  11. `v${version}`,
  12. ].filter(Boolean).join(' '),
  13. RELEASE_PREFIX: [
  14. 'Violentmonkey',
  15. beta && 'beta',
  16. ].filter(Boolean).join('-'),
  17. PRERELEASE: !!beta,
  18. TEMP_DIR: 'tmp',
  19. ASSETS_DIR: 'dist-assets',
  20. GIT_DESCRIBE: ci && exec('git describe --abbrev=7')
  21. || `v${version}-${exec('git rev-parse HEAD').slice(0, 7)}`,
  22. ACTION_BUILD_URL: process.env.ACTION_BUILD_URL,
  23. DISCORD_WEBHOOK_RELEASE: process.env.DISCORD_WEBHOOK_RELEASE,
  24. };
  25. envs.SOURCE_ZIP = `${envs.RELEASE_PREFIX}-${envs.VERSION}-source.zip`;
  26. envs.ASSET_ZIP = `${envs.RELEASE_PREFIX}-webext-v${envs.VERSION}.zip`;
  27. envs.ASSET_CWS_BETA_ZIP = `${envs.RELEASE_PREFIX}-webext-beta-v${envs.VERSION}.zip`;
  28. envs.ASSET_SELF_HOSTED_ZIP = `${envs.RELEASE_PREFIX}-webext-ffself-v${envs.VERSION}.zip`;
  29. envs.RELEASE_NOTE = beta && !ci ? `\
  30. **This is a beta release of Violentmonkey (also in [WebStore](\
  31. https://chrome.google.com/webstore/detail/violentmonkey-beta/opokoaglpekkimldnlggpoagmjegichg\
  32. )), use it at your own risk.**<br>\
  33. If you already use Violentmonkey, click \`Export to zip\` in settings before installing the beta.
  34. Notable changes:
  35. ${listCommits()}
  36. ` : `\
  37. See <https://violentmonkey.github.io/> for more details.
  38. `;
  39. Object.entries(envs).forEach(([key, value]) => {
  40. core.exportVariable(key, value);
  41. });
  42. function listCommits() {
  43. const thisTag = exec('git describe --abbrev=0 --tags');
  44. const prevTag = exec(`git describe --abbrev=0 --tags "${thisTag}^"`);
  45. const tagRange = `${prevTag}...${thisTag}`;
  46. const list = exec(`git log --oneline --skip=1 --reverse "${tagRange}"`)
  47. .replace(/</g, '\\<')
  48. .split('\n')
  49. .map((str, i) => `${str.split(/\s/, 2)[1]}${10000 + i}\n* ${str}`)
  50. .sort()
  51. .map(str => str.split('\n')[1])
  52. .join('\n');
  53. return `${list}\n\nCommit log: ${
  54. process.env.GITHUB_SERVER_URL || 'https://github.com'
  55. }/${
  56. process.env.GITHUB_REPOSITORY || 'violentmonkey/violentmonkey'
  57. }/compare/${tagRange}`;
  58. }
  59. function exec(cmd) {
  60. try {
  61. return childProcess.execSync(cmd, { encoding: 'utf8' }).trim();
  62. } catch (e) {
  63. // ignore
  64. }
  65. }