git-pull-run
Version:
Run commands and scripts after git pull
2 lines • 5.22 kB
JavaScript
function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _ts_generator(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import fs from"node:fs";import path from"node:path";import{fileURLToPath}from"node:url";import{Command,Option}from"@commander-js/extra-typings";import debugLog from"debug";import{detect}from"package-manager-detector/detect";import{gitPullRun}from"./index.js";var installOption=new Option("-i, --install","detect package manager and run install");var patternOption=new Option("-p, --pattern <glob>","pattern to match files (required)");var commandOption=new Option("-c, --command <command>","execute shell command for each matched file");var scriptOption=new Option("-s, --script <script>","execute npm script for each matched file");var messageOption=new Option("-m, --message <message>","print message to the console if matches were found");var debugOption=new Option("-d, --debug","print additional debug information");var onceOption=new Option("-o, --once","run command only once if any files match the pattern");var debug=debugLog("git-pull-run:cli");var packageJsonPath=path.join(fileURLToPath(import.meta.url),"../../package.json");var packageJson=JSON.parse(fs.readFileSync(packageJsonPath).toString());var version=packageJson.version;var program=new Command("git-pull-run").name("git-pull-run").version(version).addOption(installOption.conflicts("pattern").implies({once:true})).addOption(patternOption.conflicts("install")).addOption(commandOption.conflicts("install")).addOption(scriptOption).addOption(messageOption).addOption(debugOption.default(false)).addOption(onceOption.default(false)).action(/*#__PURE__*/function(){var _ref=_async_to_generator(function(options){var pm,_options_pattern,_options_command,_options_script,_options_message;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!options.install)return[3,2];return[4,detect()];case 1:pm=_state.sent();if(!pm)program.error("Could not detect package manager");options.pattern=function(){switch(pm===null||pm===void 0?void 0:pm.name){case"npm":return"+(package.json|package-lock.json)";case"yarn":return"+(package.json|yarn.lock)";case"pnpm":return"+(package.json|pnpm-lock.yaml)";case"bun":return"+(package.json|bun.lock|bun.lockb)";case"deno":return"+(package.json|deno.json|deno.jsonc|deno.lock)";default:return program.error("Unsupported package manager: found ".concat(pm===null||pm===void 0?void 0:pm.name,", expecting npm, yarn, pnpm, bun or deno"))}}();options.command="".concat(pm===null||pm===void 0?void 0:pm.name," install");return[3,3];case 2:if(!options.pattern){program.error("error: required option '-p, --pattern <glob>' not specified")}else if(!options.install&&!options.pattern){program.error("error: required option '-p, --pattern <glob>' not specified")}_state.label=3;case 3:if(options.debug)debugLog.enable("git-pull-run*");debug("Started git-pull-run@".concat(version));gitPullRun({pattern:(_options_pattern=options.pattern)!==null&&_options_pattern!==void 0?_options_pattern:"",command:(_options_command=options.command)!==null&&_options_command!==void 0?_options_command:"",script:(_options_script=options.script)!==null&&_options_script!==void 0?_options_script:"",message:(_options_message=options.message)!==null&&_options_message!==void 0?_options_message:"",debug:options.debug,once:options.once}).then(function(){debug("Finished git-pull-run@".concat(version));process.exitCode=0}).catch(function(){process.exitCode=1});return[2]}})});return function(options){return _ref.apply(this,arguments)}}());await program.parseAsync(process.argv);