60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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;
 | |
|  }
 |