upload-to-release.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const { execSync } = require('child_process')
  2. const { join } = require('path')
  3. const { Octokit } = require('@octokit/rest')
  4. const chalk = require('chalk')
  5. const putasset = require('putasset')
  6. const platforms = require('./platforms')
  7. const version = execSync('git log -1 --pretty=%B', {
  8. encoding: 'utf8',
  9. })
  10. ;(async () => {
  11. const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/')
  12. const octokit = new Octokit({
  13. auth: process.env.GITHUB_TOKEN,
  14. })
  15. await octokit.repos.createRelease({
  16. owner,
  17. repo,
  18. tag_name: version,
  19. })
  20. await Promise.all(
  21. platforms.map(async (platform) => {
  22. const binary = join(__dirname, '..', `bindings-${platform}`, `index.${platform}.node`)
  23. const downloadUrl = await putasset(process.env.GITHUB_TOKEN, {
  24. owner,
  25. repo,
  26. tag: version,
  27. filename: binary,
  28. })
  29. console.info(`${chalk.green(binary)} upload success`)
  30. console.info(`Download url: ${chalk.blueBright(downloadUrl)}`)
  31. }),
  32. )
  33. })().catch((e) => {
  34. console.error(e)
  35. })