#!/usr/bin/env node const shell = require('shelljs'); shell.config.fatal = true; const util = require('./utils/git_util'); if (require.main === module) { main(process.argv.splice(2)).then( (v) => process.exitCode, (e) => console.error(process.exitCode = 1, e) ); } async function main(args) { let flags = ''; let prNumber = 0; let printHelp = false; args.forEach((arg) => { if (prNumber == 0 && Number.parseInt(arg) > 0) { prNumber = Number.parseInt(arg); } else if (arg == '--help') { printHelp = true; } else if (arg == '--force-with-lease') { flags += ' --force-with-lease'; } else if (arg == '--force') { flags += ' --force'; } else { shell.echo('Unexpected argument: ', arg); } }); if (!prNumber) { const branch = util.getCurrentBranch(); const maybePr = branch.split('/')[1]; if (maybePr > 0) { shell.echo(`PR number not specified. Defaulting to #${maybePr}.`); prNumber = maybePr; } } if (!prNumber || printHelp) { shell.echo(`Push the current HEAD into an existing pull request.`); shell.echo(``); shell.echo(`${process.argv[1]} [PR_NUMBER] [--force-with-lease]`); shell.echo(``); shell.echo(` --force-with-lease Continues even \if change can\'t be fast-forwarded.`); shell.echo(` --force Forces the push with --force.`); shell.echo(` [PR_NUMBER] If not present the script guesses the PR from the branch name.`); return 1; } const prInfo = await util.githubPrInfo(prNumber); const prPushCmd = `git push${flags} ${prInfo.repository.gitUrl} HEAD:${prInfo.branch}`; shell.echo(`>>> ${prPushCmd}`); shell.exec(prPushCmd); return 0; }