{"version":3,"file":"man.mjs","names":[],"sources":["../../src/extension/man.ts"],"sourcesContent":["import { resolveAllCommands } from '../core/commands.ts';\nimport type { AnyPadroneBuilder, CommandTypesBase, PadroneCommand } from '../types/index.ts';\nimport type { PadroneSchema } from '../types/schema.ts';\nimport type { WithCommand } from '../util/type-utils.ts';\nimport { getRootCommand } from '../util/utils.ts';\nimport { passthroughSchema } from './utils.ts';\n\n// ── Types ────────────────────────────────────────────────────────────────\n\ntype ManArgs = { setup?: boolean; remove?: boolean };\n\ntype ManCommand = PadroneCommand<'man', '', PadroneSchema<ManArgs>, string, [], [], true>;\n\nexport type WithMan<T> = WithCommand<T, 'man', ManCommand>;\n\n// ── Extension ────────────────────────────────────────────────────────────\n\n/**\n * Extension that adds the `man` command for man page generation.\n *\n * Usage:\n * ```ts\n * import { createPadrone } from 'padrone';\n * import { padroneMan } from 'padrone/man';\n *\n * createPadrone('my-cli').extend(padroneMan())\n * ```\n */\nexport function padroneMan(): <T extends CommandTypesBase>(builder: T) => WithMan<T> {\n  return ((builder: AnyPadroneBuilder) =>\n    builder.command('man', (c) =>\n      c\n        .configure({ description: 'Generate man pages', hidden: true })\n        .arguments(passthroughSchema({ setup: 'boolean', remove: 'boolean' }))\n        .async()\n        .action(async (args, ctx) => {\n          const rootCommand = getRootCommand(ctx.command);\n          resolveAllCommands(rootCommand);\n          const { setupManPages, removeManPages, generateDocs } = await import('../docs/index.ts');\n          if (args.setup) {\n            const setupResult = await setupManPages(rootCommand);\n            return `${setupResult.updated ? 'Updated' : 'Installed'} ${setupResult.written.length} man page(s) in ${setupResult.dir}`;\n          }\n          if (args.remove) {\n            const removeResult = await removeManPages(rootCommand);\n            return removeResult.removed.length > 0\n              ? `Removed ${removeResult.removed.length} man page(s) from ${removeResult.dir}`\n              : 'No man pages found to remove.';\n          }\n          const docsResult = generateDocs(rootCommand, { format: 'man' });\n          return docsResult.pages[0]?.content ?? '';\n        }),\n    )) as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;AA4BA,SAAgB,aAAqE;CACnF,SAAS,YACP,QAAQ,QAAQ,QAAQ,MACtB,EACG,UAAU;EAAE,aAAa;EAAsB,QAAQ;CAAK,CAAC,CAAC,CAC9D,UAAU,kBAAkB;EAAE,OAAO;EAAW,QAAQ;CAAU,CAAC,CAAC,CAAC,CACrE,MAAM,CAAC,CACP,OAAO,OAAO,MAAM,QAAQ;EAC3B,MAAM,cAAc,eAAe,IAAI,OAAO;EAC9C,mBAAmB,WAAW;EAC9B,MAAM,EAAE,eAAe,gBAAgB,iBAAiB,MAAM,OAAO;EACrE,IAAI,KAAK,OAAO;GACd,MAAM,cAAc,MAAM,cAAc,WAAW;GACnD,OAAO,GAAG,YAAY,UAAU,YAAY,YAAY,GAAG,YAAY,QAAQ,OAAO,kBAAkB,YAAY;EACtH;EACA,IAAI,KAAK,QAAQ;GACf,MAAM,eAAe,MAAM,eAAe,WAAW;GACrD,OAAO,aAAa,QAAQ,SAAS,IACjC,WAAW,aAAa,QAAQ,OAAO,oBAAoB,aAAa,QACxE;EACN;EAEA,OADmB,aAAa,aAAa,EAAE,QAAQ,MAAM,CAC7C,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW;CACzC,CAAC,CACL;AACJ"}