push-patch.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const { appCredentialsFromString, getTokenForRepo } = require('@electron/github-app-auth');
  2. const cp = require('child_process');
  3. if (!process.env.CIRCLE_BRANCH) {
  4. console.error('Not building for a specific branch, can\'t autopush a patch');
  5. process.exit(1);
  6. }
  7. if (process.env.CIRCLE_PR_NUMBER) {
  8. console.error('Building for a forked PR, can\'t autopush a patch');
  9. process.exit(1);
  10. }
  11. async function main () {
  12. const token = await getTokenForRepo(
  13. {
  14. name: 'electron',
  15. owner: 'electron'
  16. },
  17. appCredentialsFromString(process.env.PATCH_UP_APP_CREDS)
  18. );
  19. const remoteURL = `https://x-access-token:${token}@github.com/electron/electron.git`;
  20. // NEVER LOG THE OUTPUT OF THIS COMMAND
  21. // GIT LEAKS THE ACCESS CREDENTIALS IN CONSOLE LOGS
  22. const { status } = cp.spawnSync('git', ['push', '--set-upstream', remoteURL], {
  23. stdio: 'ignore'
  24. });
  25. if (status !== 0) {
  26. console.error('Failed to push to target branch');
  27. process.exit(1);
  28. }
  29. }
  30. if (process.mainModule === module) {
  31. main().catch((err) => {
  32. console.error(err);
  33. process.exit(1);
  34. });
  35. }