UNPKG

task-workflow

Version:
2 lines (1 loc) 29.1 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var ora=require("ora"),chalk=require("chalk"),log4js=require("log4js"),path=require("path"),fse=require("fs-extra"),open=require("open"),crossSpawn=require("cross-spawn"),inquirer=require("inquirer"),os=require("os"),commander=require("commander");function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function _interopNamespace(r){if(r&&r.__esModule)return r;var n=Object.create(null);return r&&Object.keys(r).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(r,e),Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return r[e]}}))}),n.default=r,Object.freeze(n)}var ora__default=_interopDefaultLegacy(ora),chalk__default=_interopDefaultLegacy(chalk),log4js__default=_interopDefaultLegacy(log4js),path__default=_interopDefaultLegacy(path),fse__default=_interopDefaultLegacy(fse),open__default=_interopDefaultLegacy(open),inquirer__default=_interopDefaultLegacy(inquirer),__assign=function(){return(__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var a in t=arguments[r])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function __decorate(e,t,r,n){var a,o=arguments.length,i=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;0<=c;c--)(a=e[c])&&(i=(o<3?a(i):3<o?a(t,r,i):a(t,r))||i);return 3<o&&i&&Object.defineProperty(t,r,i),i}function __awaiter(e,i,c,s){return new(c=c||Promise)(function(r,t){function n(e){try{o(s.next(e))}catch(e){t(e)}}function a(e){try{o(s.throw(e))}catch(e){t(e)}}function o(e){var t;e.done?r(e.value):((t=e.value)instanceof c?t:new c(function(e){e(t)})).then(n,a)}o((s=s.apply(e,i||[])).next())})}function __generator(n,a){var o,i,c,s={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]},e={next:t(0),throw:t(1),return:t(2)};return"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(r){return function(e){var t=[r,e];if(o)throw new TypeError("Generator is already executing.");for(;s;)try{if(o=1,i&&(c=2&t[0]?i.return:t[0]?i.throw||((c=i.return)&&c.call(i),0):i.next)&&!(c=c.call(i,t[1])).done)return c;switch(i=0,(t=c?[2&t[0],c.value]:t)[0]){case 0:case 1:c=t;break;case 4:return s.label++,{value:t[1],done:!1};case 5:s.label++,i=t[1],t=[0];continue;case 7:t=s.ops.pop(),s.trys.pop();continue;default:if(!(c=0<(c=s.trys).length&&c[c.length-1])&&(6===t[0]||2===t[0])){s=0;continue}if(3===t[0]&&(!c||t[1]>c[0]&&t[1]<c[3])){s.label=t[1];break}if(6===t[0]&&s.label<c[1]){s.label=c[1],c=t;break}if(c&&s.label<c[2]){s.label=c[2],s.ops.push(t);break}c[2]&&s.ops.pop(),s.trys.pop();continue}t=a.call(n,s)}catch(e){t=[6,e],i=0}finally{o=c=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}}function __values(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function __spreadArray(e,t){for(var r=0,n=t.length,a=e.length;r<n;r++,a++)e[a]=t[r];return e}function __asyncValues(i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,t=i[Symbol.asyncIterator];return t?t.call(i):(i="function"==typeof __values?__values(i):i[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(o){e[o]=i[o]&&function(a){return new Promise(function(e,t){var r,n;a=i[o](a),r=e,e=t,n=a.done,t=a.value,Promise.resolve(t).then(function(e){r({value:e,done:n})},e)})}}}var Commit,Environment,TaskSymbol,_a,EnumExecuteLevel,AskFor,Git,MergeRequest,File,Shell,callOnce=function(t){var r=!1;return function(e){if(r)throw new Error("next can't not be called twice");return r=!0,t(e)}},compose=function(t){return function(e){return t.reduce(function(r,n){return function(e,t){return r(e,callOnce(function(e){return n(e,t)}))}},function(e,t){return t(e)})(e,function(e){return Promise.resolve(e)})}},timer=function(){var t={};return{start:function(e){t[e]={time:Date.now(),started:!0}},end:function(e){e=t[e];return e&&e.started?(e.started=!1,Date.now()-e.time):0}}}(),category=(!function(e){var t;e.typesMap=((t={}).feat={name:"新功能",value:"feat"},t.fix={name:"修复",value:"fix"},t.build={name:"构建打包",value:"build"},t.style={name:"代码样式",value:"style"},t.refactor={name:"重构(不新增功能也不是修改bug)",value:"refactor"},t.test={name:"添加测试",value:"test"},t.chore={name:"流程或工具更改",value:"chore"},t.doc={name:"文档修改",value:"doc"},t.conflict={name:"冲突解决",value:"conflict"},t.merge={name:"代码合并",value:"merge"},t),e.DEFAULT_MAX_CHANGES=100}(Commit=Commit||{}),!function(e){var t=!1;e.setDebugMode=function(e){return t=!!e},e.getDebugMode=function(){return t},e.DIR_ROOT=process.cwd(),e.DIR_STORAGE=path__default.default.resolve(e.DIR_ROOT,"node_modules",".task-workflow"),e.FILE_LOG=path__default.default.resolve(e.DIR_STORAGE,"./log"),fse__default.default.ensureFileSync(e.FILE_LOG),e.ERROR_CODE=10}(Environment=Environment||{}),!function(e){e.FunctionalTask=Symbol("functional_task"),e.ClassTask=Symbol("class_task")}(TaskSymbol=TaskSymbol||{}),"log"),level="info",logger=(log4js__default.default.configure({appenders:((_a={})[category]={type:"fileSync",filename:Environment.FILE_LOG,maxLogSize:10485760,backups:5},_a),categories:{default:{appenders:[category],level:level}}}),function(e){return log4js__default.default.getLogger("log").info(e.join(" "))}),debugLogger=function(e,t,r){var n=r.value;r.value=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];try{logger(e)}catch(e){}return n.apply(this,e)}},Tips=function(){function e(){this.loading=ora__default.default({spinner:{interval:80,frames:["-","\\","|","/"]}})}return e.prototype.showLoading=function(e){return this.loading.start(chalk__default.default.cyan(e))},e.prototype.hideLoading=function(){return this.loading.isSpinning?this.succeed(this.loading.text):this.loading.stop()},e.prototype.succeed=function(e){return this.loading.succeed(chalk__default.default.green(e))},e.prototype.log=function(e){Environment.getDebugMode()&&console.log(chalk__default.default.blue(e))},e.prototype.info=function(e){return console.log(chalk__default.default.blue(e))},e.prototype.warn=function(e){return this.loading.warn(chalk__default.default.yellow(e))},e.prototype.error=function(e){return this.loading.fail(chalk__default.default.red(e)),process.exit(Environment.ERROR_CODE)},__decorate([debugLogger],e.prototype,"log",null),__decorate([debugLogger],e.prototype,"warn",null),__decorate([debugLogger],e.prototype,"error",null),e}(),tips=new Tips,DEFAULT_CONFIG={description:"未命名流程",validate:function(){return!0},steps:[]},Workflow=function(){function e(e,t){this.name=e,this.config=__assign(__assign({},DEFAULT_CONFIG),t),this.description=this.config.description,this.register()}return e.prototype.register=function(){e.maps.has(this.name)&&tips.warn("已存在【".concat(this.name,"】流程")),e.maps.set(this.name,this)},e.prototype.validateStep=function(e){var t,r="未命名任务",n=function(){},a=function(){return!1};return"function"!=typeof e?(r=e.name,a=null!=(t=e.skip)?t:a,"function"!=typeof(n=e.use)&&tips.error("【".concat(r,"】中找不到'use'"))):n=e,{name:r,task:n,skip:a}},e.prototype.createTaskQueue=function(){var e=this;return this.config.steps.filter(Boolean).map(function(s,u){return function(i,c){return __awaiter(e,void 0,void 0,function(){var t,r,n,a,o;return __generator(this,function(e){switch(e.label){case 0:return a=this.validateStep(s),t=a.name,r=a.task,a=a.skip,n=u+1,tips.info(""),[4,a(i)];case 1:return e.sent()?(tips.warn("==".concat(n,"、【").concat(t,"】被跳过==")),[4,c(i)]):[3,3];case 2:return[2,e.sent()];case 3:return tips.info("==".concat(n,"、开始【").concat(t,"】==")),timer.start(t),[4,r(i)];case 4:return a=e.sent(),o=timer.end(t),tips.info("==".concat(n,"、【").concat(t,"】完成,耗时").concat(o,"ms==")),[4,c(a)];case 5:return[2,e.sent()]}})})}})},e.prototype.start=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,this.config.validate()];case 1:return e.sent()?(tips.succeed("开始【".concat(this.description,"】")),[2,compose(this.createTaskQueue())()]):(tips.warn("【".concat(this.description,"】验证失败,已终止")),[2])}})})},e.maps=new Map,e}(),CODE_SUCCESS=0,CODE_ERROR=10086,promisifySpawn=function(o,i,c){return void 0===c&&(c={}),new Promise(function(r,n){var e,t=crossSpawn.spawn(o,i,__assign({stdio:"pipe"},c)),a=[];null!=(e=t.stdout)&&e.on("data",function(e){a.push(Buffer.isBuffer(e)?e:Buffer.from(e))}),null!=(e=t.stderr)&&e.on("data",function(e){a.push(Buffer.isBuffer(e)?e:Buffer.from(e))}),t.on("close",function(e){var t=Buffer.concat(a).toString();null==e||e===CODE_SUCCESS?r({code:CODE_SUCCESS,message:t}):n({code:e,message:t})}),t.on("error",function(e){n({code:CODE_ERROR,message:"".concat(e.message," \n").concat(e.stack)})})})},getWarnMessageInExecute=(!function(e){e[e.None=0]="None",e[e.Warn=1]="Warn",e[e.Fatal=2]="Fatal"}(EnumExecuteLevel=EnumExecuteLevel||{}),function(e){return(e instanceof Error?"".concat(e.stack?"STACK:".concat(e.stack," "):"","\n"):"CODE:".concat(e.code," \n")).concat(e.message)}),getErrorMessageInExecute=function(e,t){return(e instanceof Error?"ERROR IN【".concat(t,"】").concat(e.stack?"\nSTACK:".concat(e.stack," "):"","\n"):"ERROR IN【".concat(t,"】\nCODE:").concat(e.code," \n")).concat(e.message)},execute=function(a,o,i){return void 0===i&&(i={}),__awaiter(void 0,void 0,void 0,function(){var t,r,n;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),tips.log("".concat(a," ").concat(o.join(" "))),[4,promisifySpawn(a,o,i)];case 1:return t=e.sent(),tips.log(JSON.stringify(t)),[2,t];case 2:return t=e.sent(),r=t,n="".concat(a," ").concat(o.join(" ")),i.level===EnumExecuteLevel.Fatal?(tips.error(getErrorMessageInExecute(r,n)),[2,Promise.reject(r)]):i.level===EnumExecuteLevel.Warn?(tips.warn(getWarnMessageInExecute(r)),[2,r]):[2,Promise.reject(r)];case 3:return[2]}})})},cmdGit="git",NoNewLine=function(a){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return __awaiter(void 0,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:return[4,a.apply(void 0,n)];case 1:return r=e.sent(),t=r.message,r=r.code,[2,{message:t.trim(),code:r}]}})})}},git=NoNewLine(function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return execute(cmdGit,e,{level:EnumExecuteLevel.Fatal})}),gitWithoutBreak=NoNewLine(function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return execute(cmdGit,e,{level:EnumExecuteLevel.Warn})}),gitInSilent=NoNewLine(function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,execute(cmdGit,t,{level:EnumExecuteLevel.None})];case 1:return[2,e.sent()];case 2:return[2,e.sent()];case 3:return[2]}})})}),getLineCount=function(e){return(e.match(/\r\n|\r|\n/g)||[]).length},RegConflictMessage=(!function(e){var r=this;e.commitMessage=function(){return __awaiter(r,void 0,void 0,function(){var t,r,n;return __generator(this,function(e){switch(e.label){case 0:return t=Object.values(Commit.typesMap),[4,inquirer__default.default.prompt([{type:"list",name:"type",message:"选择提交类型",choices:t,pageSize:t.length},{type:"input",name:"message",message:"填写提交内容",filter:function(e){return e.trim()},validate:function(e){e=String(e).trim();return 0===e.length?"请输入本次提交内容":!(70<e.length)||"提交内容不能超过70个字"}}])];case 1:return t=e.sent(),r=t.type,n=t.message,[2,"".concat(r,": ").concat(n)]}})})},e.shouldContinue=function(e){var t=e.message;return __awaiter(r,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,inquirer__default.default.prompt([{type:"confirm",name:"confirm",message:t||"是否继续?",default:!0}])];case 1:return[2,e.sent().confirm]}})})}}(AskFor=AskFor||{}),/CONFLICT/i),ActionsModules=(!function(m){var f=this;m.init=function(){return git("init")},m.config=function(e){var e=void 0===e?{}:e,t=e.name,r=e.email;return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return t?[4,git("config","user.name",'"'.concat(t,'"'))]:[3,2];case 1:e.sent(),e.label=2;case 2:return r?[4,git("config","user.email",'"'.concat(r,'"'))]:[3,4];case 3:e.sent(),e.label=4;case 4:return[2]}})})},m.commit=function(e){var a=e.message,t=e.maxChanges,o=void 0===t?Commit.DEFAULT_MAX_CHANGES:t,t=e.exitWhenEmpty,i=void 0===t||t;return __awaiter(f,void 0,void 0,function(){var t,r,n;return __generator(this,function(e){switch(e.label){case 0:return tips.showLoading("检查工作区"),[4,m.getCountOfToBeCommit()];case 1:return(t=e.sent(),tips.hideLoading(),0===t&&i)?(tips.error("无需要提交的文件"),[2]):[3,2];case 2:return(r=o&&0<o&&o<t)?[4,AskFor.shouldContinue({message:"本次提交修改数为".concat(t,",是否确认继续?")})]:[3,4];case 3:r=!e.sent(),e.label=4;case 4:if(r)return tips.error("因更改数过多而终止"),[2];e.label=5;case 5:return n=i?git:gitWithoutBreak,tips.showLoading("添加文件"),[4,n("add","-A")];case 6:return e.sent(),tips.hideLoading(),tips.showLoading("提交"),[4,n("commit","-m",a)];case 7:return e.sent(),tips.hideLoading(),[2]}})})},m.pull=function(){return __awaiter(f,void 0,void 0,function(){var t,r,n,a;return __generator(this,function(e){switch(e.label){case 0:return[4,m.getCurrentBranchName()];case 1:return t=e.sent(),[4,m.getUpstreamBranchName({branch:t})];case 2:return e.sent(),tips.showLoading("拉取远程【".concat(t,"】")),[4,gitInSilent("pull","--ff")];case 3:return(n=e.sent(),r=n.code,n=n.message,tips.hideLoading(),a=r!==CODE_SUCCESS)?[4,m.getIsHasConflict({message:n})]:[3,5];case 4:a=e.sent(),e.label=5;case 5:return a?[4,m.waitForDealWithConflict()]:[3,10];case 6:return e.sent()?[4,m.commit({message:"".concat("conflict",": 合并冲突"),exitWhenEmpty:!1})]:[3,8];case 7:return e.sent(),[3,9];case 8:return tips.error("发现冲突,请解决后再提交"),[2];case 9:return[3,11];case 10:if(r!==CODE_SUCCESS)return tips.error(n),[2,Promise.reject(n)];e.label=11;case 11:return[2]}})})},m.push=function(){return __awaiter(f,void 0,void 0,function(){var t,r,n;return __generator(this,function(e){switch(e.label){case 0:return[4,m.pull()];case 1:return e.sent(),[4,m.getCurrentBranchName()];case 2:return t=e.sent(),tips.showLoading("推送至远程【".concat(t,"】")),r=git,n=["push"],[4,m.getRemoteName()];case 3:return[4,r.apply(void 0,n.concat([e.sent(),t]))];case 4:return e.sent(),tips.hideLoading(),[2]}})})},m.pushForceDangerously=function(e){var t=e.url,r=e.branch;return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,AskFor.shouldContinue({message:"危险!将要强推至【".concat(t,"】:分支【").concat(r,"】,请确认")})];case 1:return e.sent()?(tips.showLoading("推送至远程【".concat(t,"】:分支【").concat(r,"】")),[4,git("push","-u",t,"HEAD:".concat(r),"--force")]):[3,3];case 2:return e.sent(),tips.hideLoading(),[3,4];case 3:return tips.error("已取消"),[2,Promise.reject("已取消")];case 4:return[2]}})})},m.checkout=function(e){var a=e.branch;return __awaiter(f,void 0,void 0,function(){var t,r,n;return __generator(this,function(e){switch(e.label){case 0:return tips.showLoading("检查工作区"),[4,m.getToBeCommit()];case 1:return(t=e.sent(),tips.hideLoading(),t=t)?[4,AskFor.shouldContinue({message:"工作区尚有未提交更改,是否切换分支?"})]:[3,3];case 2:t=!e.sent(),e.label=3;case 3:return t?(tips.error("已取消"),[2,Promise.reject("已取消")]):(tips.showLoading("切换至【".concat(a,"】")),[4,m.getIsExistLocalBranch({branch:a})]);case 4:return e.sent()?[4,git("checkout",a)]:[3,6];case 5:return e.sent(),[3,9];case 6:return r=git,n=["checkout","-b",a],[4,m.getUpstreamBranchName({branch:a})];case 7:return[4,r.apply(void 0,n.concat([e.sent()]))];case 8:e.sent(),e.label=9;case 9:return tips.hideLoading(),[4,m.pull()];case 10:return e.sent(),[2]}})})},m.checkoutFiles=function(e){var _=e.files,e=e.exitWhenNotExist,p=void 0!==e&&e;return __awaiter(f,void 0,void 0,function(){var t,r,n,a,o,i,c,s,u,l,f,g,d,h;return __generator(this,function(e){switch(e.label){case 0:return[4,m.getCurrentBranchName()];case 1:t=e.sent(),r=p?git:gitWithoutBreak,n=_.reduce(function(e,t){var r;return __assign(__assign({},e),((r={})[t.branch]=__spreadArray(__spreadArray([],e[t.branch]||[],!0),[t.path]),r))},{}),e.label=2;case 2:e.trys.push([2,21,22,27]),a=__asyncValues(Object.entries(n)),e.label=3;case 3:return[4,a.next()];case 4:if((o=e.sent()).done)return[3,20];if(c=o.value,i=c[0],c=c[1],tips.showLoading("正在从【".concat(i,"】恢复【").concat(c.join(","),"】")),i!==t)return[3,17];e.label=5;case 5:e.trys.push([5,11,12,17]),d=void 0,s=__asyncValues(c),e.label=6;case 6:return[4,s.next()];case 7:return(u=e.sent()).done?[3,10]:(l=u.value,[4,r("reset","--",l)]);case 8:e.sent(),e.label=9;case 9:return[3,6];case 10:return[3,17];case 11:return l=e.sent(),d={error:l},[3,17];case 12:return(e.trys.push([12,,15,16]),u&&!u.done&&(h=s.return))?[4,h.call(s)]:[3,14];case 13:e.sent(),e.label=14;case 14:return[3,16];case 15:if(d)throw d.error;return[7];case 16:return[7];case 17:return[4,r.apply(void 0,__spreadArray(["checkout",i===t?"":i,"--"],c).filter(Boolean))];case 18:e.sent(),tips.hideLoading(),e.label=19;case 19:return[3,3];case 20:return[3,27];case 21:return f=e.sent(),f={error:f},[3,27];case 22:return(e.trys.push([22,,25,26]),o&&!o.done&&(g=a.return))?[4,g.call(a)]:[3,24];case 23:e.sent(),e.label=24;case 24:return[3,26];case 25:if(f)throw f.error;return[7];case 26:return[7];case 27:return[2]}})})},m.merge=function(e){var c=e.branch,s=e.message,t=e.fastForward,u=void 0===t||t,l=e.needCheckoutFiles;return __awaiter(f,void 0,void 0,function(){var t,r,n,a,o,i;return __generator(this,function(e){switch(e.label){case 0:return tips.showLoading("正在合并【".concat(c,"】")),[4,m.getCurrentBranchName()];case 1:return t=e.sent(),[4,m.getUpstreamBranchName({branch:c})];case 2:return r=e.sent(),[4,m.fetchBranch({branch:c})];case 3:return e.sent(),n="".concat("merge",": Merge branch '").concat(c,"' into '").concat(t,"'").concat(s?" -> ".concat(s):""),[4,gitInSilent("merge",r,u&&!l?"--ff":"--no-ff",l?"--no-commit":"--commit","-m",n)];case 4:return(o=e.sent(),a=o.code,o=o.message,tips.hideLoading(),i=a!==CODE_SUCCESS)?[4,m.getIsHasConflict({message:o})]:[3,6];case 5:i=e.sent(),e.label=6;case 6:return i?l?[4,m.checkoutFiles(l)]:[3,8]:[3,13];case 7:e.sent(),e.label=8;case 8:return[4,m.waitForDealWithConflict()];case 9:return e.sent()?[4,m.commit({message:n,exitWhenEmpty:!1})]:[3,11];case 10:return e.sent(),[3,12];case 11:return tips.error("发现冲突,请解决后再提交"),[2,Promise.reject(o)];case 12:return[3,18];case 13:return a===CODE_SUCCESS?[3,14]:(tips.error(o),[2,Promise.reject(o)]);case 14:return l?[4,m.checkoutFiles(l)]:[3,18];case 15:return e.sent(),[4,m.getCurrentMergeHash()];case 16:return e.sent()?[4,m.commit({message:n,exitWhenEmpty:!1})]:[3,18];case 17:e.sent(),e.label=18;case 18:return[2]}})})},m.clone=function(e){var t=e.url,r=e.branch,n=void 0===r?"master":r,r=e.path,a=void 0===r?"":r;return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return tips.showLoading("克隆【".concat(t,"】,分支【").concat(n,"】")),[4,git("clone",t,"-b",n,a)];case 1:return e.sent(),tips.hideLoading(),[2]}})})},m.fetchBranch=function(e){var t=e.branch;return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,git("fetch","origin",t)];case 1:return[2,e.sent().message]}})})},m.getCurrentBranchName=function(){return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,git("rev-parse","--abbrev-ref","HEAD")];case 1:return[2,e.sent().message]}})})},m.getCurrentMergeHash=function(){return __awaiter(f,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:return[4,gitInSilent("rev-parse","-q","--verify","MERGE_HEAD")];case 1:return r=e.sent(),t=r.code,r=r.message,[2,t===CODE_SUCCESS?r:""]}})})},m.getIsExistLocalBranch=function(e){var t=e.branch;return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,git("branch","--list","".concat(t))];case 1:return[2,""!==e.sent().message.trim()]}})})},m.getUpstreamBranchName=function(e){var a=e.branch;return __awaiter(f,void 0,void 0,function(){var t,r,n;return __generator(this,function(e){switch(e.label){case 0:return[4,m.getRemoteName()];case 1:return t=e.sent(),[4,m.getIsExistLocalBranch({branch:a})];case 2:return e.sent()?[4,gitWithoutBreak("rev-parse","--abbrev-ref","".concat(a,"@{u}"))]:[3,7];case 3:return(n=e.sent(),r=n.code,n=n.message,r)?(tips.showLoading("上游分支不存在,开始创建上游分支"),[4,git("push","-u",t,a)]):[3,5];case 4:return e.sent(),tips.hideLoading(),[2,m.getUpstreamBranchName({branch:a})];case 5:return n.replace("".concat(t,"/"),"")!==a&&tips.warn("本地分支:【".concat(a,"】和上游分支:【").concat(n,"】似乎不一致")),[2,n];case 6:return[3,8];case 7:return[2,"".concat(t,"/").concat(a)];case 8:return[2]}})})},m.getToBeCommit=function(){return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,m.getCountOfToBeCommit()];case 1:return[2,0!==e.sent()]}})})},m.getCountOfToBeCommit=function(){return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,git("status","-s","-u")];case 1:return[2,e.sent().message.trim().split(/\r\n|\r|\n/g).filter(Boolean).length]}})})},m.getToBePushed=function(){return __awaiter(f,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:return[4,m.getCurrentBranchName()];case 1:return t=e.sent(),[4,m.getUpstreamBranchName({branch:t})];case 2:return r=e.sent(),[4,git("log",t,"^".concat(r),"--oneline")];case 3:return[2,""!==e.sent().message.trim()]}})})},m.waitForDealWithConflict=function(){return __awaiter(f,void 0,void 0,function(){var t,r,n;return __generator(this,function(e){switch(e.label){case 0:return[4,gitWithoutBreak("--no-pager","diff","--check")];case 1:return t=e.sent(),r=t.message,t.code===CODE_SUCCESS?[3,6]:[4,AskFor.shouldContinue({message:"还有".concat(getLineCount(r),"处冲突未解决,请先解决,是否继续?")})];case 2:return e.sent()?[4,m.waitForDealWithConflict()]:[3,4];case 3:return n=e.sent(),[3,5];case 4:n=!1,e.label=5;case 5:return[2,n];case 6:return[2,!0]}})})},m.getRemoteUrl=function(){return __awaiter(f,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:return t=git,r=["remote","get-url","--push"],[4,m.getRemoteName()];case 1:return[4,t.apply(void 0,r.concat([e.sent()]))];case 2:return[2,e.sent().message]}})})},m.getLastCommitMessage=function(e){var r=e.branch;return __awaiter(f,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,m.getUpstreamBranchName({branch:r})];case 1:return t=e.sent(),[4,git("log",t,"-1","--format=%s")];case 2:return[2,e.sent().message]}})})},m.getLastCommitBody=function(e){var r=e.branch;return __awaiter(f,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,m.getUpstreamBranchName({branch:r})];case 1:return t=e.sent(),[4,git("log",t,"-1","--format=%b")];case 2:return[2,e.sent().message]}})})},m.getLastCommitHash=function(e){var r=e.branch;return __awaiter(f,void 0,void 0,function(){var t;return __generator(this,function(e){switch(e.label){case 0:return[4,m.getUpstreamBranchName({branch:r})];case 1:return t=e.sent(),[4,git("log",t,"-1","--format=%H")];case 2:return[2,e.sent().message]}})})},m.getConfig=function(e){var n=e.key;return __awaiter(f,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:return[4,gitWithoutBreak("config","--get",n)];case 1:return r=e.sent(),t=r.code,r=r.message,[2,t===CODE_SUCCESS?r:""]}})})},m.getIsHasConflict=function(e){var t=e.message;return __awaiter(f,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return RegConflictMessage.test(t)?[2,!0]:[3,1];case 1:return[4,gitWithoutBreak("--no-pager","diff","--check")];case 2:return[2,e.sent().code!==CODE_SUCCESS]}})})},m.getRemoteName=function(){return __awaiter(f,void 0,void 0,function(){var t,r;return __generator(this,function(e){switch(e.label){case 0:return[4,gitWithoutBreak("remote")];case 1:return r=e.sent(),t=r.code,r=r.message,[2,t===CODE_SUCCESS&&r||"origin"]}})})}}(Git=Git||{}),!function(e){function l(e){var t=e.projectUrl,r=e.sourceBranch,n=e.targetBranch,e=e.title;return"https://".concat(t,"/merge_requests/new?").concat(new URLSearchParams({"merge_request[title]":e,"merge_request[source_branch]":r,"merge_request[target_branch]":n}).toString())}function f(e){return(e.match(r)||[""])[0].replace(/\:/,"/")}var t=this,r=/(?<=(git@|https:\/\/)).*(?=\.git)/;e.create=function(e){var i=e.projectUrl,c=e.sourceBranch,s=e.targetBranch,u=e.title;return __awaiter(t,void 0,void 0,function(){var t,r,n,a,o;return __generator(this,function(e){switch(e.label){case 0:return r=l,o={},n=f,(a=i)?[3,2]:[4,Git.getRemoteUrl()];case 1:a=e.sent(),e.label=2;case 2:return t=r.apply(void 0,[(o.projectUrl=n.apply(void 0,[a]),o.sourceBranch=c,o.targetBranch=s,o.title=u,o)]),tips.info("即将打开:".concat(t)),[2,open__default.default(t)]}})})}}(MergeRequest=MergeRequest||{}),!function(e){var r=this;e.copyTo=function(e){var t=e.from,e=e.to;return execute("cp",__spreadArray(__spreadArray(["-R"],Array.isArray(t)?t:[t],!0),[e]))},e.entryDirectory=function(e){var t=e.dir;return __awaiter(r,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return t=t||os.homedir(),[4,execute("cd",[t])];case 1:return e.sent(),process.chdir(t),[2]}})})},e.generateDir=function(e){e=e.dir;return execute("mkdir",["-p",e])},e.getList=function(e){var e=(void 0===e?{}:e).dir,t=void 0===e?".":e;return __awaiter(r,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return[4,execute("ls",["-A",t])];case 1:return[2,e.sent().message.split("\n").filter(Boolean)]}})})}}(File=File||{}),!function(e){e.run=function(e){var t=e.cmd,e=e.level,e=void 0===e?EnumExecuteLevel.None:e;return execute(t,[],{shell:!0,stdio:"inherit",level:e})},e.exec=function(e){var t=e.cmd,e=e.level,e=void 0===e?EnumExecuteLevel.None:e;return execute(t,[],{shell:!0,level:e})}}(Shell=Shell||{}),Object.freeze({__proto__:null,get MergeRequest(){return MergeRequest},get File(){return File},get Git(){return Git},get AskFor(){return AskFor},get Shell(){return Shell}})),createTaskFactory=function(c){return function(){for(var i=[],e=0;e<arguments.length;e++)i[e]=arguments[e];return function(o){return __awaiter(void 0,void 0,void 0,function(){var t,r,n,a;return __generator(this,function(e){switch(e.label){case 0:return r=(t=c).apply,n=[void 0],"function"!=typeof i[0]?[3,2]:[4,i[0](o)];case 1:return a=e.sent(),[3,3];case 2:a=i,e.label=3;case 3:return[2,r.apply(t,n.concat([a]))]}})})}}},Tasks=Object.keys(ActionsModules).reduce(function(e,t){var r=ActionsModules[t];return __assign(__assign({},e),((e={})[t]=Object.keys(r).reduce(function(e,t){return __assign(__assign({},e),((e={})[t]=createTaskFactory(r[t]),e))},{}),e))},{}),workStart=function(e){var e=void 0===e?{}:e,n=e.from,a=e.debug,o=e.workflowId;return __awaiter(void 0,void 0,void 0,function(){var r;return __generator(this,function(e){switch(e.label){case 0:return(commander.program.option("-f, --from <path>","初始化文件路径").option("--debug","开启调试模式").parse(process.argv),null==n&&(n=commander.program.from),null==a&&(a=commander.program.debug),Environment.setDebugMode(!!a),n)?(r=path__default.default.resolve(process.cwd(),n),fse__default.default.existsSync(r)||tips.error("配置文件:".concat(r," 不存在")),[4,(t=r,Promise.resolve().then(function(){return _interopNamespace(require(t))}))]):[3,2];case 1:e.sent(),e.label=2;case 2:return Workflow.maps.forEach(function(e,t){commander.program.command(t).description(e.description).action(function(){e.start()})}),o&&Workflow.maps.has(o)?null!=(r=Workflow.maps.get(o))&&r.start():commander.program.parse(process.argv),[2]}var t})})};exports.Tasks=Tasks,exports.Workflow=Workflow,exports.workStart=workStart;