{"version":3,"sources":["../src/run.ts"],"sourcesContent":["import yargs from \"yargs-parser\";\nimport { join } from 'path';\nimport os from \"os\";\nimport { pathToFileURL } from \"url\";\nimport { printHelp } from \"./util\";\nimport type { PrintTable } from \"./util\";\nimport Debug from \"debug\";\n\nconst debug = Debug(\"libargs\");\n/**\n * Run the given command with the given flags.\n * NOTE: This function provides no error handling, so be sure\n * to present user-friendly error output where the fn is called.\n **/\nexport async function runCommand(cmd) {\n  // console.dir(cmd);\n  if (!cmd.name) {\n    // No command handler matched! This is unexpected.\n    throw new Error(`Error running ${cmd} -- no command found.`);\n  }\n\n  if (cmd.name === \"help\") {\n    console.dir(\"help\");\n    return;\n  }\n\n  const input = cmd.input;\n  let flag: [string, string][];\n  let table: PrintTable = {};\n\n  if (cmd.flags) {\n    flag = Object.keys(cmd.flags).map(function (f) {\n      return [f, cmd.flags[f]];\n    });\n\n    table = {\n      Flags: flag,\n    };\n  } else {\n    table = {\n      Flags: [[\" - no flag\", \"\"]],\n    };\n  }\n\n  cmd.help = function () {\n    printHelp({\n      version: cmd?.version,\n      commandName: cmd.show,\n      usage: cmd.usage || \"[...flags]\",\n      tables: table,\n      description: `  ${cmd.desc}`,\n    });\n  };\n\n  if (input?.help || input?.h) {\n    cmd.help();\n    return 0;\n  } else {\n    // These commands can run directly without parsing the user config.\n    // 当cmd目录下，有同名目录，可能会有坑\n    var isWin = os.platform() === \"win32\";\n    var moduleURL;\n    if (isWin) {\n      moduleURL = pathToFileURL(\n        join(cmd.dir, `${cmd.file || cmd.name}.js`)\n      ).href;\n    } else {\n      moduleURL = join(\n        cmd.dir.replace(\"src\", \"dist\"),\n        `${cmd.file || cmd.name}.js`\n      );\n    }\n\n    try {\n      const fn = await import(moduleURL);\n      debug(fn);\n      debug(cmd[\"fnName\"] || \"default\");\n      debug(fn[cmd[\"fnName\"] || \"default\"]);\n      await fn[cmd[\"fnName\"] || \"default\"](cmd);\n    } catch (error) {\n      console.dir(error);\n    }\n  }\n}\n"],"mappings":"yCACA,OAAS,QAAAA,MAAY,OACrB,OAAOC,MAAQ,KACf,OAAS,iBAAAC,MAAqB,MAG9B,OAAOC,MAAW,QAElB,IAAMC,EAAQD,EAAM,SAAS,EAM7B,eAAsBE,EAAWC,EAAK,CAEpC,GAAI,CAACA,EAAI,KAEP,MAAM,IAAI,MAAM,iBAAiBA,CAAG,uBAAuB,EAG7D,GAAIA,EAAI,OAAS,OAAQ,CACvB,QAAQ,IAAI,MAAM,EAClB,MACF,CAEA,IAAMC,EAAQD,EAAI,MACdE,EACAC,EAAoB,CAAC,EA0BzB,GAxBIH,EAAI,OACNE,EAAO,OAAO,KAAKF,EAAI,KAAK,EAAE,IAAI,SAAUI,EAAG,CAC7C,MAAO,CAACA,EAAGJ,EAAI,MAAMI,CAAC,CAAC,CACzB,CAAC,EAEDD,EAAQ,CACN,MAAOD,CACT,GAEAC,EAAQ,CACN,MAAO,CAAC,CAAC,aAAc,EAAE,CAAC,CAC5B,EAGFH,EAAI,KAAO,UAAY,CACrBK,EAAU,CACR,QAASL,GAAK,QACd,YAAaA,EAAI,KACjB,MAAOA,EAAI,OAAS,aACpB,OAAQG,EACR,YAAa,KAAKH,EAAI,IAAI,EAC5B,CAAC,CACH,EAEIC,GAAO,MAAQA,GAAO,EACxB,OAAAD,EAAI,KAAK,EACF,EAIP,IAAIM,EAAQC,EAAG,SAAS,IAAM,QAC1BC,EACAF,EACFE,EAAYC,EACVC,EAAKV,EAAI,IAAK,GAAGA,EAAI,MAAQA,EAAI,IAAI,KAAK,CAC5C,EAAE,KAEFQ,EAAYE,EACVV,EAAI,IAAI,QAAQ,MAAO,MAAM,EAC7B,GAAGA,EAAI,MAAQA,EAAI,IAAI,KACzB,EAGF,GAAI,CACF,IAAMW,EAAK,MAAM,OAAOH,GACxBV,EAAMa,CAAE,EACRb,EAAME,EAAI,QAAa,SAAS,EAChCF,EAAMa,EAAGX,EAAI,QAAa,SAAS,CAAC,EACpC,MAAMW,EAAGX,EAAI,QAAa,SAAS,EAAEA,CAAG,CAC1C,OAASY,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CAEJ","names":["join","os","pathToFileURL","Debug","debug","runCommand","cmd","input","flag","table","f","printHelp","isWin","os","moduleURL","pathToFileURL","join","fn","error"]}