{"version":3,"file":"copy-file-to-dest.cjs","names":["commandCftdIdentity","PACKAGE_META","picocolors","resolveGlobPatterns","resolveLogLevelOption"],"sources":["../src/copy-file-to-dest.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport \"@rzl-zone/node-only\";\n\nimport {\n  commandCftdIdentity,\n  copyFileToDest,\n  createCopyFileToDestParameterSet,\n  type LogLevel\n} from \"@rzl-zone/build-tools\";\nimport {\n  joinInline,\n  joinLinesLoose,\n  picocolors\n} from \"@rzl-zone/build-tools/utils\";\nimport { createBaseProgram } from \"@rzl-zone/build-tools/commander-kit\";\n\nimport {\n  resolveGlobPatterns,\n  resolveLogLevelOption\n} from \"./_private/internal\";\nimport { PACKAGE_META } from \"./_private/constants\";\n\ntype CliOptions = {\n  target?: string;\n  outputRoot?: string;\n  absolute?: boolean;\n  rename?: string;\n  logLevel?: LogLevel | boolean;\n};\n\nconst cmdIdentity = commandCftdIdentity\n  .setPackageName(PACKAGE_META.name)\n  .setVersion(PACKAGE_META.version);\n\nconst program = createBaseProgram({\n  commandIdentity: cmdIdentity,\n  ui: {\n    title: cmdIdentity.cli(),\n    usage: joinInline(\n      picocolors.cyan(cmdIdentity.commandName),\n      picocolors.gray(\"<source...>\"),\n      picocolors.reset(\"--target\"),\n      picocolors.gray(\"<dir>\"),\n      picocolors.blueBright(\"[options]\")\n    )\n  }\n});\n\nprogram\n  .description(\n    picocolors.bold(\n      picocolors.magentaBright(\n        joinLinesLoose(\n          \"Copy one or more files of ANY type into a destination directory.\",\n          \"\",\n          \"All non-flag arguments are treated as source file paths.\"\n        )\n      )\n    )\n  )\n  .argument(\"[source...]\", \"Source file path(s) to be copy.\")\n  .option(\"-t, --target <dir>\", \"Target directory where files will be copied.\")\n  .option(\n    \"--otr, --output-root <dir>\",\n    \"Output root directory used when resolving the target path\",\n    \"dist\"\n  )\n  .option(\n    \"-a, --absolute\",\n    \"Treat <target> as an absolute path relative to project root (disables --output-root)\",\n    false\n  )\n  .option(\n    \"-r, --rename <file>\",\n    \"Rename the copied file (only valid when a single source is provided)\"\n  )\n  .option(\n    \"--ll, --log-level [level]\",\n    joinLinesLoose(\n      \"Set logging verbosity level, available logging levels:\",\n      \"                              - silent ➔ no output.\",\n      \"                              - error ➔ errors only.\",\n      \"                              - info (default) ➔ standard informational logs (include `error`).\",\n      \"                              - debug ➔ verbose / debug logs (include `error`).\",\n\n      picocolors.italic(\n        picocolors.yellowBright(\n          \"                             * Invalid values will fallback to the default level\"\n        )\n      )\n    ),\n    \"info\"\n  )\n  .addHelpText(\n    \"after\",\n    joinLinesLoose(\n      \"\",\n      picocolors.bold(\"# Notes:\"),\n      `  ${picocolors.dim(\"• You may provide MULTIPLE source files.\")}`,\n      `  ${picocolors.dim(\"• All positional arguments are treated as sources.\")}`,\n      `  ${picocolors.dim(\"• When multiple sources are provided, original file names are preserved.\")}`,\n      `  ${picocolors.dim(\"• --rename is invalid when multiple sources are provided.\")}`,\n      \"\",\n      picocolors.bold(\"# Examples:\"),\n      `  ${picocolors.bold(\"• Copy a single file\")}`,\n      `    ${picocolors.cyan(\"copy-file-to-dest\")} src/logo.png ${picocolors.cyanBright(\n        \"--target\"\n      )} assets`,\n      \"\",\n      `  ${picocolors.bold(\"• Copy multiple files\")}`,\n      `    ${picocolors.cyan(\"copy-file-to-dest\")} src/a.json src/b.json ${picocolors.cyanBright(\n        \"--target\"\n      )} config`,\n      \"\",\n      `  ${picocolors.bold(\"• Copy and rename a single file\")}`,\n      `    ${picocolors.cyan(\"copy-file-to-dest\")} src/app.json ${picocolors.cyanBright(\n        \"--target\"\n      )} config ${picocolors.cyanBright(\"--rename\")} app.config.json`,\n      \"\",\n      `  ${picocolors.bold(\"• Copy using an absolute target path\")}`,\n      `    ${picocolors.cyan(\"copy-file-to-dest\")} src/config.json ${picocolors.cyanBright(\n        \"--target\"\n      )} config/runtime ${picocolors.cyanBright(\"--absolute\")}`\n    )\n  )\n  .action(async () => {\n    const { absolute, logLevel, outputRoot, rename, target } =\n      program.opts<CliOptions>();\n\n    const sources = resolveGlobPatterns(program.args, program, {\n      argsName: \"<source...>\"\n    });\n\n    if (!target) {\n      return program.error(\"missing required option: -t, --target <dir>\");\n    }\n\n    const srcLen = sources.length;\n\n    if (rename && srcLen > 1) {\n      return program.error(\n        `argument ('-r' or '--rename') can only be used with a single source file, but received ${srcLen} source file(s).`\n      );\n    }\n\n    const resolvedLogLevel = resolveLogLevelOption(logLevel, program);\n\n    const payload = createCopyFileToDestParameterSet(\n      srcLen === 1\n        ? {\n            source: sources![0] || \"\",\n            target,\n            fileName: rename,\n            outputRoot: absolute ? undefined : outputRoot,\n            absoluteTarget: absolute\n          }\n        : sources.map((source) => ({\n            source,\n            target,\n            outputRoot: absolute ? undefined : outputRoot,\n            absoluteTarget: absolute\n          }))\n    );\n\n    try {\n      await copyFileToDest(payload, {\n        logLevel: resolvedLogLevel,\n        __commandTitle: cmdIdentity.cli()\n      });\n    } catch (error) {\n      console.error(error);\n      process.exit(1);\n    }\n  });\n\nprogram.parseAsync();\n"],"mappings":"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"}
