upload-to-github.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const GitHub = require('github')
  2. const github = new GitHub()
  3. github.authenticate({type: 'token', token: process.env.ELECTRON_GITHUB_TOKEN})
  4. if (process.argv.length < 5) {
  5. console.log('Usage: upload-to-github filePath fileName releaseId')
  6. process.exit(1)
  7. }
  8. let filePath = process.argv[2]
  9. let fileName = process.argv[3]
  10. let releaseId = process.argv[4]
  11. let githubOpts = {
  12. owner: 'electron',
  13. repo: 'electron',
  14. id: releaseId,
  15. filePath: filePath,
  16. name: fileName
  17. }
  18. let retry = 0
  19. function uploadToGitHub () {
  20. github.repos.uploadAsset(githubOpts).then(() => {
  21. console.log(`Successfully uploaded ${fileName} to GitHub.`)
  22. process.exit()
  23. }).catch((err) => {
  24. if (retry < 4) {
  25. console.log(`Error uploading ${fileName} to GitHub, will retry. Error was:`, err)
  26. retry++
  27. github.repos.getRelease(githubOpts).then(release => {
  28. let existingAssets = release.data.assets.filter(asset => asset.name === fileName)
  29. if (existingAssets.length > 0) {
  30. console.log(`${fileName} already exists; will delete before retrying upload.`)
  31. github.repos.deleteAsset({
  32. owner: 'electron',
  33. repo: 'electron',
  34. id: existingAssets[0].id
  35. }).then(uploadToGitHub).catch(uploadToGitHub)
  36. } else {
  37. uploadToGitHub()
  38. }
  39. })
  40. } else {
  41. console.log(`Error retrying uploading ${fileName} to GitHub:`, err)
  42. process.exitCode = 1
  43. }
  44. })
  45. }
  46. uploadToGitHub()