{"version":3,"file":"version.mjs","names":[],"sources":["../../src/extension/version.ts"],"sourcesContent":["import { thenMaybe } from '#src/core/results.ts';\nimport { resolveCommand } from '../core/commands.ts';\nimport { defineInterceptor } from '../core/interceptors.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, getVersion } from '../util/utils.ts';\n\n// ── Types ────────────────────────────────────────────────────────────────\n\nexport type VersionCommand = PadroneCommand<'version', '', PadroneSchema<void>, string, [], [], false>;\n\nexport type WithVersion<T> = WithCommand<T, 'version', VersionCommand>;\n\n// ── Interceptor ─────────────────────────────────────────────────────────\n\nconst versionInterceptor = defineInterceptor({ id: 'padrone:version', name: 'padrone:version', order: -1000 }, () => ({\n  parse(_ctx, next) {\n    return thenMaybe(next(), (res) => {\n      const hasVersionFlag = res.rawArgs.version || res.rawArgs.v || res.rawArgs.V;\n\n      // Only show version for root command (no subcommand matched)\n      if (hasVersionFlag && !res.command.parent) {\n        delete res.rawArgs.version;\n        delete res.rawArgs.v;\n        delete res.rawArgs.V;\n\n        // Route to the version command so its action handles the rest\n        const versionCmd = res.command.commands?.find((c) => c.name === 'version');\n        if (versionCmd) {\n          resolveCommand(versionCmd);\n          return { ...res, command: versionCmd, rawArgs: {}, positionalArgs: [] };\n        }\n      }\n\n      return res;\n    });\n  },\n}));\n\n// ── Extension ────────────────────────────────────────────────────────────\n\n/**\n * Extension that adds version support:\n * - `version` command\n * - `--version` / `-v` / `-V` flags (root command only)\n *\n * Usage:\n * ```ts\n * createPadrone('my-cli').extend(padroneVersion())\n * ```\n */\nexport function padroneVersion(): <T extends CommandTypesBase>(builder: T) => WithVersion<T> {\n  return ((builder: AnyPadroneBuilder) =>\n    builder\n      .command('version', (c) =>\n        c.configure({ description: 'Display the version number', hidden: true }).action((_args, ctx) => {\n          const rootCommand = getRootCommand(ctx.command);\n          return getVersion(rootCommand.version);\n        }),\n      )\n      .intercept(versionInterceptor)) as any;\n}\n"],"mappings":";;;;;AAgBA,MAAM,qBAAqB,kBAAkB;CAAE,IAAI;CAAmB,MAAM;CAAmB,OAAO;AAAM,UAAU,EACpH,MAAM,MAAM,MAAM;CAChB,OAAO,UAAU,KAAK,IAAI,QAAQ;EAIhC,KAHuB,IAAI,QAAQ,WAAW,IAAI,QAAQ,KAAK,IAAI,QAAQ,MAGrD,CAAC,IAAI,QAAQ,QAAQ;GACzC,OAAO,IAAI,QAAQ;GACnB,OAAO,IAAI,QAAQ;GACnB,OAAO,IAAI,QAAQ;GAGnB,MAAM,aAAa,IAAI,QAAQ,UAAU,MAAM,MAAM,EAAE,SAAS,SAAS;GACzE,IAAI,YAAY;IACd,eAAe,UAAU;IACzB,OAAO;KAAE,GAAG;KAAK,SAAS;KAAY,SAAS,CAAC;KAAG,gBAAgB,CAAC;IAAE;GACxE;EACF;EAEA,OAAO;CACT,CAAC;AACH,EACF,EAAE;;;;;;;;;;;AAcF,SAAgB,iBAA6E;CAC3F,SAAS,YACP,QACG,QAAQ,YAAY,MACnB,EAAE,UAAU;EAAE,aAAa;EAA8B,QAAQ;CAAK,CAAC,CAAC,CAAC,QAAQ,OAAO,QAAQ;EAE9F,OAAO,WADa,eAAe,IAAI,OACX,CAAC,CAAC,OAAO;CACvC,CAAC,CACH,CAAC,CACA,UAAU,kBAAkB;AACnC"}