{"version":3,"sources":["../src/util.ts"],"sourcesContent":["import { bgGreen, bgWhite, black, bold, dim, green } from \"kleur/colors\";\nimport Debug from \"debug\";\n\nconst debug = Debug(\"libargs\");\nexport type PrintTable = Record<string, [command: string, help: string][]>;\n\nexport function printHelp({\n  version,\n  commandName,\n  headline,\n  usage,\n  tables,\n  description,\n}: {\n  version: string;\n  commandName: string;\n  headline?: string;\n  usage?: string;\n  tables?: PrintTable;\n  description?: string;\n}) {\n  debug(tables);\n  const linebreak = () => \"\";\n  const title = (label: string) => `  ${bgWhite(black(` ${label} `))}`;\n  const table = (\n    rows: [string, string][],\n    { padding }: { padding: number }\n  ) => {\n    const split = process.stdout.columns < 60;\n    let raw = \"\";\n\n    for (const row of rows) {\n      if (split) {\n        raw += `    ${row[0]}\\n    `;\n      } else {\n        raw += `${`${row[0]}`.padStart(padding)}`;\n      }\n      raw += \"  \" + dim(row[1]) + \"\\n\";\n    }\n\n    return raw.slice(0, -1); // remove latest \\n\n  };\n\n  let message = [];\n\n  if (headline) {\n    message.push(\n      linebreak(),\n      `  ${bgGreen(black(` ${commandName} `))} ${\n        version ? green(`v${version}`) : \"\"\n      } ${headline}`\n    );\n  }\n\n  if (usage) {\n    message.push(linebreak(), `  ${green(commandName)} ${bold(usage)}`);\n  }\n\n  if (tables) {\n    function calculateTablePadding(rows: [string, string][]) {\n      return rows.reduce((val, [first]) => Math.max(val, first.length), 0) + 2;\n    }\n    const tableEntries = Object.entries(tables);\n    const padding = Math.max(\n      ...tableEntries.map(([, rows]) => calculateTablePadding(rows))\n    );\n    for (const [tableTitle, tableRows] of tableEntries) {\n      message.push(\n        linebreak(),\n        title(tableTitle),\n        table(tableRows, { padding })\n      );\n    }\n  }\n\n  if (description) {\n    message.push(linebreak(), `${description}`);\n  }\n\n  // eslint-disable-next-line no-console\n  console.log(message.join(\"\\n\") + \"\\n\");\n}\n"],"mappings":"AAAA,OAAS,WAAAA,EAAS,WAAAC,EAAS,SAAAC,EAAO,QAAAC,EAAM,OAAAC,EAAK,SAAAC,MAAa,eAC1D,OAAOC,MAAW,QAElB,IAAMC,EAAQD,EAAM,SAAS,EAGtB,SAASE,EAAU,CACxB,QAAAC,EACA,YAAAC,EACA,SAAAC,EACA,MAAAC,EACA,OAAAC,EACA,YAAAC,CACF,EAOG,CACDP,EAAMM,CAAM,EACZ,IAAME,EAAY,IAAM,GAClBC,EAASC,GAAkB,KAAKhB,EAAQC,EAAM,IAAIe,CAAK,GAAG,CAAC,CAAC,GAC5DC,EAAQ,CACZC,EACA,CAAE,QAAAC,CAAQ,IACP,CACH,IAAMC,EAAQ,QAAQ,OAAO,QAAU,GACnCC,EAAM,GAEV,QAAWC,KAAOJ,EACZE,EACFC,GAAO,OAAOC,EAAI,CAAC,CAAC;AAAA,MAEpBD,GAAO,GAAG,GAAGC,EAAI,CAAC,CAAC,GAAG,SAASH,CAAO,CAAC,GAEzCE,GAAO,KAAOlB,EAAImB,EAAI,CAAC,CAAC,EAAI;AAAA,EAG9B,OAAOD,EAAI,MAAM,EAAG,EAAE,CACxB,EAEIE,EAAU,CAAC,EAef,GAbIb,GACFa,EAAQ,KACNT,EAAU,EACV,KAAKf,EAAQE,EAAM,IAAIQ,CAAW,GAAG,CAAC,CAAC,IACrCD,EAAUJ,EAAM,IAAII,CAAO,EAAE,EAAI,EACnC,IAAIE,CAAQ,EACd,EAGEC,GACFY,EAAQ,KAAKT,EAAU,EAAG,KAAKV,EAAMK,CAAW,CAAC,IAAIP,EAAKS,CAAK,CAAC,EAAE,EAGhEC,EAAQ,CACV,IAASY,EAAT,SAA+BN,EAA0B,CACvD,OAAOA,EAAK,OAAO,CAACO,EAAK,CAACC,CAAK,IAAM,KAAK,IAAID,EAAKC,EAAM,MAAM,EAAG,CAAC,EAAI,CACzE,EACMC,EAAe,OAAO,QAAQf,CAAM,EACpCO,EAAU,KAAK,IACnB,GAAGQ,EAAa,IAAI,CAAC,CAAC,CAAET,CAAI,IAAMM,EAAsBN,CAAI,CAAC,CAC/D,EACA,OAAW,CAACU,EAAYC,CAAS,IAAKF,EACpCJ,EAAQ,KACNT,EAAU,EACVC,EAAMa,CAAU,EAChBX,EAAMY,EAAW,CAAE,QAAAV,CAAQ,CAAC,CAC9B,CAEJ,CAEIN,GACFU,EAAQ,KAAKT,EAAU,EAAG,GAAGD,CAAW,EAAE,EAI5C,QAAQ,IAAIU,EAAQ,KAAK;AAAA,CAAI,EAAI;AAAA,CAAI,CACvC","names":["bgGreen","bgWhite","black","bold","dim","green","Debug","debug","printHelp","version","commandName","headline","usage","tables","description","linebreak","title","label","table","rows","padding","split","raw","row","message","calculateTablePadding","val","first","tableEntries","tableTitle","tableRows"]}