action-helper.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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 envs = {
  7. VERSION: version,
  8. RELEASE_NAME: [
  9. beta && 'BETA',
  10. `v${version}`,
  11. ].filter(Boolean).join(' '),
  12. RELEASE_PREFIX: [
  13. 'Violentmonkey',
  14. beta && 'beta',
  15. ].filter(Boolean).join('-'),
  16. PRERELEASE: !!beta,
  17. TEMP_DIR: 'tmp',
  18. ASSETS_DIR: 'dist-assets',
  19. };
  20. envs.ASSET_ZIP = `${envs.RELEASE_PREFIX}-webext-v${envs.VERSION}.zip`;
  21. envs.ASSET_SELF_HOSTED_ZIP = `${envs.RELEASE_PREFIX}-webext-ffself-v${envs.VERSION}.zip`;
  22. envs.RELEASE_NOTE = beta ? `\
  23. **This is a beta release of Violentmonkey, use it at your own risk.**<br>\
  24. If you already use Violentmonkey, click \`Export to zip\` in settings before installing the beta.
  25. ${listCommits()}
  26. ` : `\
  27. See <https://violentmonkey.github.io/> for more details.
  28. `;
  29. Object.entries(envs).forEach(([key, value]) => {
  30. core.exportVariable(key, value);
  31. });
  32. function listCommits() {
  33. const exec = cmd => childProcess.execSync(cmd, {encoding: 'utf8'}).trim();
  34. const thisTag = exec('git describe --abbrev=0');
  35. const prevTag = exec(`git describe --abbrev=0 --tags "${thisTag}^"`);
  36. return exec(`git log --oneline --skip=1 --reverse "${prevTag}...${thisTag}"`)
  37. .split('\n')
  38. .map((str, i) => `${str.split(/\s/, 2)[1]}${10000 + i}\n${str}`)
  39. .sort()
  40. .map(str => str.split('\n')[1])
  41. .join('\n');
  42. }