#!/usr/bin/env node import { reverseDir } from "./reverse" function printHelp() { console.log(`tdir Usage: tdir reverse [--map ] Commands: reverse Rebuild template files from a rendered directory and reverse map Options: --map Reverse map path. Defaults to /.tdir-map.json. Relative paths are resolved from . --help Show this help message. `) } function parseReverseArgs(args: string[]) { const positional: string[] = [] let mapPath: string | undefined for (let i = 0; i < args.length; i++) { const arg = args[i]! if (arg === "--help" || arg === "-h") { return { help: true, positional, mapPath } } if (arg === "--map") { const value = args[++i] if (!value) throw new Error("Missing value for --map") mapPath = value continue } positional.push(arg) } return { help: false, positional, mapPath } } function main(argv: string[]) { const [command, ...args] = argv if (!command || command === "--help" || command === "-h") { printHelp() return 0 } if (command !== "reverse") { throw new Error(`Unknown command: ${command}`) } const parsed = parseReverseArgs(args) if (parsed.help) { printHelp() return 0 } const [renderedDir, templateDir] = parsed.positional if (!renderedDir || !templateDir || parsed.positional.length > 2) { throw new Error("Usage: tdir reverse [--map ]") } const result = reverseDir(renderedDir, templateDir, { mapPath: parsed.mapPath }) console.log(`Wrote ${result.filesWritten} file${result.filesWritten === 1 ? "" : "s"}`) for (const warning of result.warnings) { console.warn(`Warning: ${warning.outputPath}: ${warning.message}`) } return result.warnings.length > 0 ? 2 : 0 } try { process.exitCode = main(process.argv.slice(2)) } catch (error) { console.error(error instanceof Error ? error.message : String(error)) process.exitCode = 1 }