{"version":3,"sources":["../../src/base/Command.ts"],"names":["Command","BaseCommand","constructor","name","globalOptions","rawArgs","_globalOptionsCommand","_examples","configureOutput","writeOut","str","out","write","getOutHasColors","getErrHasColors","stripColor","stripAnsi","outputError","color","red","configureHelp","useImprovedHelp","outputOrder","exitOverride","err","app","exit","exitCode","error","hook","thisCommand","actionCommand","opts","help","subcommand","env","console","log","debug","process","on","args","examples","Array","isArray","join","template","title","createHelp","styleTitle","addHelpText","t","getExecutableFileCommand","path","executableFile","program","startFn","createCommand","COMMAND_PREVENT_EXECUTE","command","parent","importAllExecutableSubCommands","inheritSettings","inheritGlobalOptions","Promise","all","commands","map","copyInheritedSettings","setGlobalOptionsCommand","findCommandPath","paths","executableDir","_name","find","existsSync","undefined","Error","addSubCommand","shift","description","_arguments","arguments","addCommand","_executableHandler","startsWith","dirname","fileURLToPath","_executableDir","_executableFile","_addGlobalOption","option","addOption","push","removeOption","options","opt","index","findIndex","_optionValues","_optionValueSources","_savedState","prototype","splice","call","updateGlobalOptions","forEach","addHelpOption","cmd","handleOptionsCallback","filter","callback","apply","attributeName","reduce","objectify","_outputHelpIfRequested","concat","slice","parse","argv","parseOptions","emit","parseAsync","createArgument","createOption","flags","Object","assign","configuration","merge","_helpConfiguration","action","fn"],"mappings":";;;;;;;;;;AAAA,cAAA,EAAA;AAWO,IAAMA,QAAAA,GAAN,MAAMA,QAAAA,SAAgBC,WAAAA,CAAAA;AAEzBC,EAAAA,WAAAA,CAAYC,IAAe,EAAA;AACvB,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AAoMVC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,eAAAA,EAA0B,EAAA,CAAA;AAgBhBC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA;AACVC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,uBAAAA,CAAAA;AA+JUC,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA,WAAAA,CAAAA;AAlXN,IAAA,IAAA,CACCC,eAAqB,CAAA;AAClBC,MAAAA,QAAAA,0BAAWC,GAAgB,KAAA,IAAA,CAAKC,GAAIC,CAAAA,KAAAA,CAAMF,GAAAA,CAAhC,EAAA,UAAA,CAAA;AACVG,MAAAA,eAAAA,+BAAuB,IAAN,EAAA,iBAAA,CAAA;AACjBC,MAAAA,eAAAA,+BAAuB,IAAN,EAAA,iBAAA,CAAA;AACjBC,MAAAA,UAAAA,kBAAaL,MAAAA,CAAAA,CAAAA,GAAAA,KAAQM,SAAUN,CAAAA,GAAAA,CAAnB,EAAA,YAAA,CAAA;MACZO,WAAa,kBAAA,MAAA,CAAA,CAACP,GAAKE,EAAAA,KAAAA,KAA2BA,KAAM,CAAA,IAAA,CAAKD,IAAIO,KAAMC,CAAAA,GAAAA,CAAIT,GAAAA,CAAAA,CAA1D,EAAA,aAAA;AACjB,KAAA,EACCU,aAAc,CAAA;MACXC,eAAiB,EAAA,IAAA;MACjBC,WAAa,EAAA;QACT,OAAS,EAAA,EAAA;QACT,oBAAsB,EAAA,EAAA;QACtB,cAAgB,EAAA,EAAA;QAChB,eAAiB,EAAA,EAAA;QACjB,aAAe,EAAA,EAAA;QACf,mBAAqB,EAAA;AACzB;KACJ,CAAA,CACCC,YAAaC,CAAAA,CAAAA,GAAAA,KAAAA;AACV,MAAA,IAAK,cAAcA,GAAM,EAAA;AACrB,QAAA,OAAO,IAAKC,CAAAA,GAAAA,CAAIC,IAAKF,CAAAA,GAAAA,CAAIG,QAAQ,CAAA;AACrC;AACA,MAAO,OAAA,IAAA,CAAKF,GAAIG,CAAAA,KAAAA,CAAMJ,GAAAA,CAAAA;KAC1B,CAAA;AAEA,IAAA,IAAA,CAAKK,IAAK,CAAA,WAAA,EAAa,CAACC,WAAAA,EAAaC,aAAAA,KAAAA;AACjC,MAAKD,IAAAA,WAAAA,CAAYE,IAAI,EAAA,CAAGC,IAAO,EAAA;AAC3BH,QAAAA,WAAAA,CAAYG,IAAK,CAAA;UAAEL,KAAO,EAAA;SAAM,CAAA;AAChC,QAAA,IAAA,CAAKH,IAAIC,IAAI,EAAA;AACjB;KACJ,CAAA;AACA,IAAKG,IAAAA,CAAAA,IAAAA,CAAK,YAAc,EAAA,CAACC,WAAAA,KAAAA;KACzB,CAAA;AACA,IAAA,IAAA,CAAKD,IAAK,CAAA,eAAA,EAAiB,CAACC,WAAAA,EAAaI,UAAAA,KAAAA;AACrC,MAAKJ,IAAAA,WAAAA,CAAYE,IAAI,EAAA,CAAGG,GAAM,EAAA;AAG1BC,QAAAA,OAAAA,CAAQC,IAAI,CAAWP,QAAAA,EAAAA,WAAAA,CAAYE,IAAI,EAAA,CAAGG,GAAG,CAAK,GAAA,CAAA,CAAA;AAClDG,QAAM,KAAA,CAAA,KAAA,EAAOC,QAAQJ,GAAG,CAAA;AACxBC,QAAAA,OAAAA,CAAQC,GAAI,CAAA,CAAA,0BAAA,EAA6BH,UAAW/B,CAAAA,IAAAA,EAAI,CAAI,CAAA,CAAA;AAChE;KACJ,CAAA;AACA,IAAKqC,IAAAA,CAAAA,EAAAA,CAAG,GAAK,EAAA,CAAA,GAAIC,IAAAA,KAAAA;AACbH,MAAM,KAAA,CAAA,gBAAA,EAAA,GAAqBG,IAAAA,CAAAA;KAC/B,CAAA;AACJ;AAIAC,EAAAA,QAAAA,CAASA,QAAmC,EAAA;AACxC,IAAA,IAAKA,QAAW,EAAA;AACZ,MAAInC,IAAAA,SAAAA,GAAkBoC,MAAMC,OAAQF,CAAAA,QAAAA,IAAaA,QAAmBG,CAAAA,IAAAA,CAAK,IAAA,CAAQH,GAAAA,QAAAA;AACjF,MAAA,IAAA,CAAKnC,SAAY,GAAA,IAAA,CAAKI,GAAImC,CAAAA,QAAAA,CAASvC,SAAAA,CAAAA;AACnC,MAAA,MAAMwC,KAAW,GAAA,IAAA,CAAKC,UAAU,EAAA,CAAGC,WAAW,WAAA,CAAA;AAC9C,MAAKC,IAAAA,CAAAA,WAAAA,CAAY,OAAS,EAAA,IAAA,CAAKvC,GAAIwC,CAAAA,CAAAA;;EAE7CJ,KAAAA;AACA,EAAA,IAAA,CAAKxC,SAAS;AACf,CAAA,CAAA;AACW,MAAO,OAAA,IAAA;AACX;AACA,IAAA,OAAO,IAAKA,CAAAA,SAAAA;AAChB;;;;;;;AAQA,EAAA,MAAM6C,wBAA2B,GAAA;AAC7B,IAAMC,MAAAA,IAAAA,GAAgC,KAAKC,cAAc,EAAA;AACzD,IAAMC,MAAAA,OAAAA,GAAgC,KAAK9B,GAAI8B,CAAAA,OAAAA;AAC/C,IAAMC,MAAAA,OAAAA,GAAgC,KAAK/B,GAAI+B,CAAAA,OAAAA;AAC/C,IAAK/B,IAAAA,CAAAA,GAAAA,CAAI+B,OAA6B,GAAA,CAAA,GAAIf,IAAS,KAAA,IAAA;AACnD,IAAA,IAAA,CAAKhB,GAAI8B,CAAAA,OAAAA,GAA6B,IAAK9B,CAAAA,GAAAA,CAAIgC,aAAa,EAAA;AAC5DlB,IAAAA,OAAAA,CAAQJ,IAAIuB,uBAA0B,GAAA,IAAA;AACtC,IAAA,MAAM,OAAOL,IAAAA,CAAAA;AACbd,IAAAA,OAAAA,CAAQJ,IAAIuB,uBAA0B,GAAA,KAAA;AACtC,IAAMC,MAAAA,OAAAA,GAAgC,KAAKlC,GAAI8B,CAAAA,OAAAA;AAC/CI,IAAAA,OAAAA,CAAQC,MAA8BL,GAAAA,OAAAA;AACtC,IAAA,IAAA,CAAK9B,IAAI8B,OAA6BA,GAAAA,OAAAA;AACtC,IAAA,IAAA,CAAK9B,IAAI+B,OAA6BA,GAAAA,OAAAA;AACtC,IAAOG,OAAAA,OAAAA;AACX;AAEA,EAAA,MAAME,8BAA+BC,CAAAA,eAAAA,GAAkB,IAAMC,EAAAA,oBAAAA,GAAuB,KAAO,EAAA;AACvF,IAAA,OAAOC,QAAQC,GAAI,CAAA,IAAA,CAAKC,QAASC,CAAAA,GAAAA,CAAI,OAAMR,OAAAA,KAAAA;AACvC,MAAKA,IAAAA,OAAAA,CAAQL,gBAAmB,EAAA;AAC5BK,QAAU,OAAA,GAAA,MAAMA,QAAQP,wBAAwB,EAAA;AAChD,QAAA,IAAKU,eAAkB,EAAA;AACnBH,UAAAA,OAAAA,CAAQS,sBAAsB,IAAI,CAAA;AACtC;AACA,QAAA,IAAKL,oBAAuB,EAAA;AACxBJ,UAAQU,OAAAA,CAAAA,uBAAAA,CAAwB,KAAK/D,qBAAqB,CAAA;AAC9D;AACJ;AACA,MAAOqD,OAAAA,OAAAA;AACX,KAAA,CAAA,CAAA;AACJ;AAEUW,EAAAA,eAAAA,CAAgBnE,IAAc,EAAA;AACpC,IAAA,MAAMoE,KAAQ,GAAA;AACV1B,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,GAAO,KAAA,CAAA;AAClC0C,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,GAAO,MAAA,CAAA;AAClC0C,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,GAAO,KAAA,CAAA;AAClC0C,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,GAAO,MAAA,CAAA;AAClC0C,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,EAAM,UAAA,CAAA;AACjC0C,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,EAAM,WAAA,CAAA;AACjC0C,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,EAAM,UAAA,CAAA;AACjC0C,MAAAA,IAAAA,CAAK,IAAK2B,CAAAA,aAAAA,EAAiBrE,EAAAA,IAAAA,EAAM,WAAA,CAAA;MACjC0C,IAAK,CAAA,IAAA,CAAK2B,eAAiB,EAAA,CAAA,EAAG,KAAKC,KAAK,CAAA,CAAA,EAAItE,IAAAA,CAAS,GAAA,CAAA,CAAA;MACrD0C,IAAK,CAAA,IAAA,CAAK2B,eAAiB,EAAA,CAAA,EAAG,KAAKC,KAAK,CAAA,CAAA,EAAItE,IAAAA,CAAU,IAAA,CAAA,CAAA;MACtD0C,IAAK,CAAA,IAAA,CAAK2B,eAAiB,EAAA,CAAA,EAAG,KAAKC,KAAK,CAAA,CAAA,EAAItE,IAAAA,CAAS,GAAA,CAAA,CAAA;MACrD0C,IAAK,CAAA,IAAA,CAAK2B,eAAiB,EAAA,CAAA,EAAG,KAAKC,KAAK,CAAA,CAAA,EAAItE,IAAAA,CAAU,IAAA,CAAA;;AAgB1D,IAAA,MAAMkD,OAAOkB,KAAMG,CAAAA,IAAAA,CAAKrB,CAAAA,KAAQsB,KAAAA,UAAAA,CAAWtB,KAAAA,CAAAA,CAAAA;AAE3C,IAAA,IAAKA,SAASuB,MAAY,EAAA;AACtB,MAAM,MAAA,IAAIC,KAAM,CAAA,CAAA,0BAAA,EAA6B1E,IAAAA,CAAAA;GAAuFoE,KAAM1B,CAAAA,IAAAA,CAAK,KAAA,CAAA,CAAQ,CAAA,CAAA;AAC3J;AACA,IAAOQ,OAAAA,IAAAA;AACX;;AAOAyB,EAAAA,aAAAA,CAAAA,GAAiBrC,IAAY,EAAA;AACzB,IAAMtC,MAAAA,IAAAA,GAAcsC,KAAKsC,KAAK,EAAA;AAC9B,IAAMC,MAAAA,WAAAA,GAAcvC,KAAKsC,KAAK,EAAA;AAC9B,IAAME,MAAAA,UAAAA,GAAcxC,KAAKsC,KAAK,EAAA;AAC9B,IAAMpB,MAAAA,OAAAA,GAAc,IAAKF,CAAAA,aAAAA,CAActD,IAAAA,CAAAA;AACvC,IAAMkD,MAAAA,IAAAA,GAAc,IAAKiB,CAAAA,eAAAA,CAAgBnE,IAAAA,CAAAA;AAGzCwD,IAAAA,OAAAA,CAAQL,eAAeD,IAAAA,CAAAA;AACvBM,IAAAA,OAAAA,CAAQS,sBAAsB,IAAI,CAAA;AAGlC,IAAA,IAAKa,UAAa,EAAA;AACdtB,MAAAA,OAAAA,CAAQuB,UAAUD,UAAAA,CAAAA;AACtB;AAEA,IAAA,IAAKD,WAAc,EAAA;AACfrB,MAAAA,OAAAA,CAAQqB,YAAYA,WAAAA,CAAAA;AACpB,MAAO,OAAA,IAAA,CAAKG,WAAWxB,OAAAA,CAAAA;AAC3B;AACA,IAAA,IAAA,CAAKwB,WAAWxB,OAAAA,CAAAA;AAChB,IAAOA,OAAAA,OAAAA;AACX;AAISa,EAAAA,aAAAA,CAAcA,aAA6B,EAAA;AAChD,IAAK,IAAA,OAAOA,kBAAkB,QAAW,EAAA;AACrC,MAAA,IAAA,CAAKY,kBAAqB,GAAA,IAAA;AAC1B,MAAKZ,IAAAA,aAAAA,CAAca,UAAW,CAAA,SAAA,CAAa,EAAA;AACvCb,QAAgBc,aAAAA,GAAAA,OAAAA,CAAQC,aAAcf,CAAAA,aAAAA,CAAAA,CAAAA;AAC1C;AACA,MAAA,IAAA,CAAKgB,cAAiBhB,GAAAA,aAAAA;AACtB,MAAO,OAAA,IAAA;AACX;AACA,IAAA,OAAO,IAAKgB,CAAAA,cAAAA;AAChB;AAIAlC,EAAAA,cAAAA,CAAeA,cAA8B,EAAA;AACzC,IAAK,IAAA,OAAOA,mBAAmB,QAAW,EAAA;AACtC,MAAA,IAAA,CAAK8B,kBAAqB,GAAA,IAAA;AAC1B,MAAA,IAAA,CAAKK,eAAqBnC,GAAAA,cAAAA;AAC1B,MAAO,OAAA,IAAA;AACX;AACA,IAAA,OAAO,IAAKmC,CAAAA,eAAAA;AAChB;AAKUC,EAAAA,gBAAAA,CAAiBC,MAAgB,EAAA;AACvC,IAAA,IAAA,CAAKC,UAAUD,MAAAA,CAAAA;AACf,IAAKvF,IAAAA,CAAAA,aAAAA,CAAcyF,KAAKF,MAAAA,CAAAA;AACxB,IAAK9D,IAAAA,CAAAA,IAAAA,CAAK,aAAa,MAAA;KAQvB,CAAA;AACJ;AAMAiE,EAAAA,YAAAA,CAAaH,MAA+B,EAAA;AACxC,IAAK,IAAA,OAAOA,WAAW,QAAW,EAAA;AAC9BA,MAAS,MAAA,GAAA,IAAA,CAAKI,QAAQrB,IAAKsB,CAAAA,CAAAA,QAAOA,GAAI7F,CAAAA,IAAAA,OAAWwF,MAAAA,CAAAA;AACrD;AACA,IAAIM,IAAAA,KAAAA,GAAQ,IAAKF,CAAAA,OAAAA,CAAQG,SAAUF,CAAAA,CAAAA,GAAOA,KAAAA,GAAAA,CAAI7F,IAAI,EAAA,KAAOwF,MAAOxF,CAAAA,IAAAA,EAAI,CAAA;AACpE,IAAA,IAAK8F,SAAS,CAAI,EAAA;AACd,MAAA,OAAO,IAAKE,CAAAA,aAAAA,CAAeR,MAAOxF,CAAAA,IAAAA,EAAI,CAAA;AACtC,MAAA,OAAO,IAAKiG,CAAAA,mBAAAA,CAAqBT,MAAOxF,CAAAA,IAAAA,EAAI,CAAA;AAC5C,MAAA,IAAK,IAAMkG,EAAAA,WAAAA,IAAe,IAAMA,EAAAA,WAAAA,EAAaF,aAAgB,EAAA;AACzD,QAAA,OAAO,IAAKE,CAAAA,WAAAA,CAAYF,aAAeR,CAAAA,MAAAA,CAAOxF,MAAI,CAAA;AAClD,QAAA,OAAO,IAAKkG,CAAAA,WAAAA,CAAYD,mBAAqBT,CAAAA,MAAAA,CAAOxF,MAAI,CAAA;AAC5D;AACAwC,MAAAA,KAAAA,CAAM2D,UAAUC,MAAOC,CAAAA,IAAAA,CAAK,IAAKT,CAAAA,OAAAA,EAASE,OAAO,CAAA,CAAA;AACrD;AACA,IAAO,OAAA,IAAA;AACX;EAEAQ,mBAAsB,GAAA;AAClB,IAAKrG,IAAAA,CAAAA,aAAAA,CAAcsG,OAAQf,CAAAA,CAAAA,MAAAA,KAAAA;AACvB,MAAA,IAAA,CAAKG,aAAaH,MAAAA,CAAAA;KACtB,CAAA;AACA,IAAA,IAAA,CAAKrF,qBAAsByF,CAAAA,OAAAA,CAAQW,OAAQf,CAAAA,CAAAA,MAAAA,KAAAA;AACvC,MAAA,IAAA,CAAKD,iBAAiBC,MAAAA,CAAAA;KAC1B,CAAA;AACA,IAAA,IAAA,CAAKgB,aAAc,CAAA,IAAA,CAAKrG,qBAAuB,CAAA,aAAA,CAAe,CAAA;AAC9D,IAAA,IAAA,CAAKmB,GAAIrB,CAAAA,aAAAA,GAAgB,IAAKE,CAAAA,qBAAAA,CAAsB0B,IAAI,EAAA;AACxD,IAAO,OAAA,IAAA;AACX;AAEAqC,EAAAA,uBAAAA,CAAwBuC,GAA2B,EAAA;AAC/C,IAAA,IAAK,KAAKtG,qBAAwB,EAAA;AAC9B,MAAO,OAAA,IAAA;AACX;AACA,IAAA,IAAA,CAAKA,qBAAwBsG,GAAAA,GAAAA;AAC7BA,IAAIb,GAAAA,CAAAA,OAAAA,CAAQW,OAAQf,CAAAA,CAAAA,MAAAA,KAAAA;AAChB,MAAA,IAAA,CAAKD,iBAAiBC,MAAAA,CAAAA;KAC1B,CAAA;AACA,IAAKgB,IAAAA,CAAAA,aAAAA,CAAcC,GAAK,CAAA,aAAA,CAAe,CAAA;AACvC,IAAO,OAAA,IAAA;AACX;EAES5E,IAAa,GAAA;AAClB,IAAIA,IAAAA,IAAAA,GAAO,MAAMA,IAAAA,EAAAA;AACjBA,IAAW,IAAA,GAAA;MAAE,GAAGA,IAAAA;MAAM,GAAG,IAAA,CAAK6E,sBAAsB7E,IAAAA;AAAM,KAAA;AAC1D,IAAOA,OAAAA,IAAAA;AACX;AAEA6E,EAAAA,qBAAAA,CAAsB7E,IAAM,EAAA;AACxB,IAAO,OAAA,IAAA,CAAK+D,OAAQe,CAAAA,MAAAA,CAAOnB,CAAAA,MAAAA,KAAUA,MAAOoB,CAAAA,QAAAA,EAAQ,CAAA,CACxC5C,GAAIwB,CAAAA,CAAAA,MAAU,KAAA;AAAEA,MAAAA,MAAAA,CAAOxF,IAAI,EAAA;MAAIwF,MAAOoB,CAAAA,QAAAA,EAAWC,CAAAA,KAAAA,CAAM,IAAM,EAAA;QAC1DhF,IAAM2D,CAAAA,MAAAA,CAAOsB,eAAa,CAAA;AAC1BtB,QAAAA,MAAAA;AACA,QAAA,IAAA;QACA,IAAKlE,CAAAA;AACR,OAAA;KAAG,CACHyF,CAAAA,MAAAA,CAAOC,SAAW,EAAA,EAAC,CAAA;AACnC;AAEAC,EAAAA,sBAAAA,CAAuB3E,IAAM,EAAA;AACzB,IAAO,KAAA,CAAA,wBAAA,EAA2BA,IAAK4E,CAAAA,MAAAA,CAAO,KAAKhH,OAAQiH,CAAAA,KAAAA,CAAM,CAAA,CAAA,CAAA,CAAA;AACrE;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BgBC,EAAAA,KAAAA,CAAMC,MAA0BC,YAAmC,EAAA;AAC/E,IAAKC,IAAAA,CAAAA,IAAAA,CAAK,OAASF,EAAAA,IAAAA,EAAMC,YAAAA,CAAAA;AACzB,IAAO,OAAA,KAAA,CAAMF,KAAMC,CAAAA,IAAAA,EAAMC,YAAAA,CAAAA;AAC7B;EAEA,MAAsBE,UAAAA,CAAWH,MAA0BC,YAA2C,EAAA;AAClG,IAAKC,IAAAA,CAAAA,IAAAA,CAAK,YAAcF,EAAAA,IAAAA,EAAMC,YAAAA,CAAAA;AAC9B,IAAO,OAAA,KAAA,CAAME,UAAWH,CAAAA,IAAAA,EAAMC,YAAAA,CAAAA;AAClC;AAGgBG,EAAAA,cAAAA,CAAezH,MAAc6E,WAAgC,EAAA;AAAE,IAAA,OAAO,IAAKvD,CAAAA,GAAAA,CAAImG,cAAezH,CAAAA,IAAAA,EAAM6E,WAAAA,CAAAA;AAAc;AAElH6C,EAAAA,YAAAA,CAAaC,OAAe9C,WAA8B,EAAA;AAAE,IAAA,OAAO,IAAKvD,CAAAA,GAAAA,CAAIoG,YAAaC,CAAAA,KAAAA,EAAO9C,WAAAA,CAAAA;AAAc;AAE9GvB,EAAAA,aAAAA,CAActD,IAAwB,EAAA;AAAE,IAAO,OAAA,IAAA,CAAKsB,GAAIgC,CAAAA,aAAAA,CAActD,IAAAA,CAAAA;AAAO;EAE7E6C,UAAmB,GAAA;AAC/B,IAAO+E,OAAAA,MAAAA,CAAOC,OAAO,IAAKvG,CAAAA,GAAAA,CAAIuB,YAAc,EAAA,IAAA,CAAK5B,eAAa,CAAA;AAClE;AAgCSA,EAAAA,aAAAA,CAAc6G,aAAwC,EAAA;AAC3D,IAAA,IAAKA,aAAgB,EAAA;AACjBC,MAAM,KAAA,CAAA,IAAA,CAAKC,oBAAoBF,aAAAA,CAAAA;AAC/B,MAAO,OAAA,IAAA;AACX;AACA,IAAA,OAAO,MAAM7G,aAAAA,EAAAA;AACjB;AAESgH,EAAAA,MAAAA,CACLC,EACI,EAAA;AACJ,IAAO,OAAA,KAAA,CAAMD,OAAOC,EAAAA,CAAAA;AACxB;AAKJ,CAAA;AAzX6BpI,MAAAA,CAAAA,QAAAA,EAAAA,SAAAA,CAAAA;AAAtB,IAAMD,OAAN,GAAA","file":"chunk-MVGP4BWY.mjs","sourcesContent":["import { isArray, merge, objectify } from '@radicjs/utils';\nimport { Argument, Option, ParseOptions } from 'commander';\nimport { existsSync } from 'fs';\nimport { dirname, join } from 'path';\nimport stripAnsi from 'strip-ansi';\nimport { fileURLToPath } from 'url';\nimport { debug } from '../utils/debug.js';\nimport { BaseCommand } from './BaseCommand.js';\nimport type { GlobalOptionsCommand } from './GlobalOptionsCommand.js';\nimport { Help, HelpConfiguration } from './Help.js';\n\nexport class Command extends BaseCommand {\n\n    constructor(name?: string) {\n        super(name);\n\n        this\n        .configureOutput(<any>{\n            writeOut: (str: string) => this.out.write(str),\n            getOutHasColors: () => true,\n            getErrHasColors: () => true,\n            stripColor: (str) => stripAnsi(str),\n            outputError: (str, write: (str) => string) => write(this.out.color.red(str)),\n        })\n        .configureHelp({\n            useImprovedHelp: true,\n            outputOrder: {\n                'Usage': 10,\n                'CommandDescription': 20,\n                'CommandsList': 30,\n                'ArgumentsList': 40,\n                'OptionsList': 50,\n                'GlobalOptionsList': 60,\n            },\n        })\n        .exitOverride(err => {\n            if ( 'exitCode' in err ) {\n                return this.app.exit(err.exitCode);\n            }\n            return this.app.error(err as any);\n        });\n\n        this.hook('preAction', (thisCommand, actionCommand) => {\n            if ( thisCommand.opts().help ) {\n                thisCommand.help({ error: false });\n                this.app.exit();\n            }\n        });\n        this.hook('postAction', (thisCommand) => {\n        });\n        this.hook('preSubcommand', (thisCommand, subcommand) => {\n            if ( thisCommand.opts().env ) {\n                // One use case for this hook is modifying environment variables before\n                // parsing the subcommand, say by reading .env file.\n                console.log(`Reading ${thisCommand.opts().env}...`);\n                debug('ENV', process.env);\n                console.log(`About to call subcommand: ${subcommand.name()}`);\n            }\n        });\n        this.on('*', (...args) => {\n            debug('command events', ...args);\n        });\n    }\n\n    examples(): string\n    examples(examples: string | string[]): this\n    examples(examples?: string | string[]): any {\n        if ( examples ) {\n            let _examples       = Array.isArray(examples) ? (examples as any[]).join('\\n') : examples;\n            this._examples = this.out.template(_examples);\n            const title    = this.createHelp().styleTitle('Examples:');\n            this.addHelpText('after', this.out.t`\n\n${title}\n${this._examples}\n`);\n            return this;\n        }\n        return this._examples;\n    }\n\n    /**\n     * Commander was never meant to load subcommands as modules.\n     * Commander runs subcommands as child processes\n     *\n     * So this way is abit of hacky way to load a subcommand as a module\n     */\n    async getExecutableFileCommand() {\n        const path                          = this.executableFile();\n        const program                       = this.app.program;\n        const startFn                       = this.app.startFn;\n        this.app.startFn                    = (...args) => null;\n        this.app.program                    = this.app.createCommand();\n        process.env.COMMAND_PREVENT_EXECUTE = true;\n        await import(path);\n        process.env.COMMAND_PREVENT_EXECUTE = false;\n        const command                       = this.app.program;\n        command.parent                      = program;\n        this.app.program                    = program;\n        this.app.startFn                    = startFn;\n        return command;\n    }\n\n    async importAllExecutableSubCommands(inheritSettings = true, inheritGlobalOptions = false) {\n        return Promise.all(this.commands.map(async command => {\n            if ( command.executableFile() ) {\n                command = await command.getExecutableFileCommand();\n                if ( inheritSettings ) {\n                    command.copyInheritedSettings(this as any);\n                }\n                if ( inheritGlobalOptions ) {\n                    command.setGlobalOptionsCommand(this._globalOptionsCommand);\n                }\n            }\n            return command;\n        }));\n    }\n\n    protected findCommandPath(name: string) {\n        const paths = [\n            join(this.executableDir(), name + '.ts'),\n            join(this.executableDir(), name + '.mts'),\n            join(this.executableDir(), name + '.js'),\n            join(this.executableDir(), name + '.mjs'),\n            join(this.executableDir(), name, 'index.ts'),\n            join(this.executableDir(), name, 'index.mts'),\n            join(this.executableDir(), name, 'index.js'),\n            join(this.executableDir(), name, 'index.mjs'),\n            join(this.executableDir(), `${this._name}_${name}.ts`),\n            join(this.executableDir(), `${this._name}_${name}.mts`),\n            join(this.executableDir(), `${this._name}_${name}.js`),\n            join(this.executableDir(), `${this._name}_${name}.mjs`),\n        ];\n        // const globs = [\n        //     `*${this._name}_${name}.{ts,js,mjs,mts}`,\n        //     `${name}.{ts,js,mjs,mts}`,\n        //     `${name}/index.{ts,js,mjs,mts}`,\n        // ]\n        // let results = globbySync(globs,{\n        //     cwd:this.executableDir(),\n        //     absolute:true,\n        //     globstar:true,\n        //     followSymbolicLinks:true,\n        //     unique:true,\n        //     deep:2,\n        //     expandDirectories:true\n        // })\n        const path = paths.find(path => existsSync(path));\n\n        if ( path === undefined ) {\n            throw new Error(`Could not add subcommand \"${name}\". Big chance the corresponding command file does not exists. Searched paths:\\n-${paths.join('\\n-')}`);\n        }\n        return path;\n    }\n\n    /** @return {Command} Returns instance of subcommand */\n    addSubCommand(name: string): this\n    /** @return {Command} Returns the current command for chaining */\n    addSubCommand(name: string, description: string, _arguments?: string): this\n    /** @return {Command} Returns instance of subcommand */\n    addSubCommand(...args): this {\n        const name        = args.shift();\n        const description = args.shift();\n        const _arguments  = args.shift();\n        const command     = this.createCommand(name);\n        const path        = this.findCommandPath(name);\n\n        //@ts-ignore\n        command.executableFile(path);\n        command.copyInheritedSettings(this as any);\n\n\n        if ( _arguments ) {\n            command.arguments(_arguments);\n        }\n\n        if ( description ) {\n            command.description(description);\n            return this.addCommand(command as any);\n        }\n        this.addCommand(command as any);\n        return command as any;\n    }\n\n    override executableDir(): string\n    override executableDir(executableDir: string): this\n    override executableDir(executableDir?: string): any {\n        if ( typeof executableDir === 'string' ) {\n            this._executableHandler = true;\n            if ( executableDir.startsWith('file://') ) {\n                executableDir = dirname(fileURLToPath(executableDir));\n            }\n            this._executableDir = executableDir;\n            return this;\n        }\n        return this._executableDir;\n    }\n\n    executableFile(): string\n    executableFile(executableFile: string): this\n    executableFile(executableFile?: string): any {\n        if ( typeof executableFile === 'string' ) {\n            this._executableHandler = true;\n            this._executableFile    = executableFile;\n            return this;\n        }\n        return this._executableFile;\n    }\n\n\n    globalOptions: Option[] = [];\n\n    protected _addGlobalOption(option: Option) {\n        this.addOption(option);\n        this.globalOptions.push(option);\n        this.hook('preAction', () => {\n            // const opts  = this.opts();\n            // const value = opts[ option.short ];\n            // //@ts-ignore\n            //\n            // const envKey          = snakeCase(option.long).toUpperCase();\n            // //@ts-ignore\n            // process.env[ envKey ] = value;\n        });\n    }\n\n    protected rawArgs: string[];\n    _globalOptionsCommand: GlobalOptionsCommand;\n\n\n    removeOption(option: string | Option): this {\n        if ( typeof option === 'string' ) {\n            option = this.options.find(opt => opt.name() === option);\n        }\n        let index = this.options.findIndex(opt => opt.name() === option.name());\n        if ( index >= 0 ) {\n            delete this._optionValues[ option.name() ];\n            delete this._optionValueSources[ option.name() ];\n            if ( this?._savedState && this?._savedState?._optionValues ) {\n                delete this._savedState._optionValues[ option.name() ];\n                delete this._savedState._optionValueSources[ option.name() ];\n            }\n            Array.prototype.splice.call(this.options, index, 1);\n        }\n        return this;\n    }\n\n    updateGlobalOptions() {\n        this.globalOptions.forEach(option => {\n            this.removeOption(option);\n        });\n        this._globalOptionsCommand.options.forEach(option => {\n            this._addGlobalOption(option);\n        });\n        this.addHelpOption(this._globalOptionsCommand[ '_helpOption' ]);\n        this.app.globalOptions = this._globalOptionsCommand.opts();\n        return this;\n    }\n\n    setGlobalOptionsCommand(cmd: GlobalOptionsCommand) {\n        if ( this._globalOptionsCommand ) {\n            return this;\n        }\n        this._globalOptionsCommand = cmd;\n        cmd.options.forEach(option => {\n            this._addGlobalOption(option as any);\n        });\n        this.addHelpOption(cmd[ '_helpOption' ]);\n        return this;\n    }\n\n    override opts<T>(): T {\n        let opts = super.opts();\n        opts     = { ...opts, ...this.handleOptionsCallback(opts) };\n        return opts as T;\n    }\n\n    handleOptionsCallback(opts) {\n        return this.options.filter(option => option.callback())\n                   .map(option => [ option.name(), option.callback().apply(this, [\n                       opts[ option.attributeName() ],\n                       option,\n                       this,\n                       this.app,\n                   ]) ])\n                   .reduce(objectify, {});\n    }\n\n    _outputHelpIfRequested(args) {\n        super[ '_outputHelpIfRequested' ](args.concat(this.rawArgs.slice(2)));\n    }\n\n\n    /** @return Returns instance of subcommand */\n    // subCommand(name: string) {\n    //     // const subcommand = this.addSubCommand(name);\n    //\n    //     let path        = this.findCommandPath(name);\n    //     let { app }     = this;\n    //     let { program } = app;\n    //\n    //     process.env.COMMAND_PREVENT_EXECUTE = true;\n    //\n    //     let parentProgram = program;\n    //     app.program       = app.createCommand(name);\n    //\n    //     const module        = require(path);\n    //     let childProgram    = app.program;\n    //     childProgram.parent = parentProgram;\n    //\n    //     app.program = parentProgram;\n    //     process.env.COMMAND_PREVENT_EXECUTE = false;\n    //\n    //     this.addSubCommand(name, childProgram.description());\n    //\n    //     // console.log(module);\n    //     return this;\n    // }\n\n\n    public override parse(argv?: readonly string[], parseOptions?: ParseOptions): this {\n        this.emit('parse', argv, parseOptions);\n        return super.parse(argv, parseOptions);\n    }\n\n    public override async parseAsync(argv?: readonly string[], parseOptions?: ParseOptions): Promise<any> {\n        this.emit('parseAsync', argv, parseOptions);\n        return super.parseAsync(argv, parseOptions);\n    }\n\n\n    public override createArgument(name: string, description?: string): Argument { return this.app.createArgument(name, description); }\n\n    public override createOption(flags: string, description?: string): Option { return this.app.createOption(flags, description); }\n\n    public override createCommand(name?: string): Command { return this.app.createCommand(name); }\n\n    public override createHelp(): Help {\n        return Object.assign(this.app.createHelp(), this.configureHelp());\n    }\n\n    //\n    // override getAutocompleteSubCommand(event: any, elements: string[], commandName: string, commandArgs: string[]) {\n    //     const partialCommand = this.commands.find(function (c) {\n    //         return c.name() === commandName;\n    //     }) as any;\n    //\n    //     if ( partialCommand.executableFile() ) {\n    //         const command            = partialCommand.getExecutableFileCommand();\n    //         command._completionRules = {\n    //             ...partialCommand._completionRules,\n    //             ...command._completionRules,\n    //             options: {\n    //                 ...command._completionRules.options,\n    //                 ...partialCommand._completionRules.options,\n    //             },\n    //         };\n    //         return command;\n    //     }\n    //     return partialCommand;\n    // }\n    //\n    // mergeCompletionRulesFromGlobalCommand() {\n    //     this._completionRules.options = {\n    //         ...this._completionRules.options,\n    //         ...this._globalOptionsCommand._completionRules.options,\n    //     };\n    //     return this;\n    // }\n    override configureHelp(): HelpConfiguration\n    override configureHelp(configuration: HelpConfiguration): this\n    override configureHelp(configuration?: HelpConfiguration): any {\n        if ( configuration ) {\n            merge(this._helpConfiguration, configuration);\n            return this;\n        }\n        return super.configureHelp();\n    }\n\n    override action(\n        fn: (this: this, ...args: any[]) => void | Promise<void>,\n    ): this {\n        return super.action(fn as any) as any;\n    };\n\n\n    protected _examples?: string;\n\n}\n"]}