{"version":3,"sources":["../src/command.ts"],"sourcesContent":["#!/usr/bin/env -S pnpm exec tsx\n\nimport {\n  FallbackEnv,\n  logStderr,\n  SeatbeltConfig,\n  SeatbeltEnv,\n} from \"./SeatbeltConfig\"\nimport { parse } from \"ts-command-line-args\"\nimport { SeatbeltConfigSchema } from \"./jsonSchema/SeatbeltConfigSchema\"\nimport { name, version } from \"../package.json\"\n\nexport interface SeatbeltCliConfig extends SeatbeltConfig {\n  /** Paths are relative to this directory. Default: `process.cwd()` */\n  pwd?: string\n  /** Print the version and exit */\n  version?: boolean\n  /** Command to execute. Default: `eslint` */\n  exec?: string\n  /** Show help and exit */\n  help?: boolean\n}\n\nconst ZERO_WIDTH_SPACE = \"\\u200B\"\n\nfunction parseArgs() {\n  const fallback = SeatbeltConfig.fromFallbackEnv(process.env as unknown as FallbackEnv)\n  const overrides = SeatbeltConfig.fromEnvOverrides(process.env as unknown as SeatbeltEnv)\n  const env = { ...fallback, ...overrides }\n  const escapeForChalk = (s: string) =>\n    s\n      .replaceAll(\"{\", \"\\\\{\")\n      .replaceAll(\"}\", \"\\\\}\")\n      .replaceAll(/^(\\s)/gm, (match) => `${ZERO_WIDTH_SPACE}${match}`)\n  return parse<SeatbeltCliConfig>(\n    {\n      pwd: {\n        type: String,\n        defaultValue: env.pwd ?? process.cwd(),\n        description: `Paths are relative to this directory`,\n        optional: true,\n      },\n      seatbeltFile: {\n        type: String,\n        alias: \"f\",\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.seatbeltFile.description,\n        ),\n        defaultValue: env.seatbeltFile,\n        optional: true,\n      },\n      keepRules: {\n        type: String,\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.keepRules.description,\n        ),\n        defaultValue: env.keepRules,\n        multiple: true,\n        optional: true,\n      },\n      allowIncreaseRules: {\n        alias: \"r\",\n        type: String,\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.allowIncreaseRules.description,\n        ),\n        defaultValue: env.allowIncreaseRules,\n        multiple: true,\n        optional: true,\n      },\n      frozen: {\n        type: Boolean,\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.frozen.description,\n        ),\n        defaultValue: env.frozen,\n        optional: true,\n      },\n      disable: {\n        type: Boolean,\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.disable.description,\n        ),\n        defaultValue: env.disable,\n        optional: true,\n      },\n      threadsafe: {\n        type: Boolean,\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.threadsafe.description,\n        ),\n        defaultValue: env.threadsafe,\n        optional: true,\n      },\n      verbose: {\n        type: Boolean,\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.verbose.description,\n        ),\n        defaultValue: env.verbose,\n        optional: true,\n      },\n      root: {\n        type: String,\n        description: escapeForChalk(\n          SeatbeltConfigSchema.properties.root.description,\n        ),\n        defaultValue: env.root,\n        optional: true,\n      },\n      version: {\n        type: Boolean,\n        description: \"Print the version and exit\",\n        optional: true,\n        alias: \"v\",\n      },\n      exec: {\n        type: String,\n        description: \"Command to execute\",\n        optional: true,\n        defaultValue: \"eslint\",\n      },\n      help: {\n        type: Boolean,\n        description: \"Show help and exit\",\n        optional: true,\n        alias: \"h\",\n      },\n    },\n    {\n      processExitCode: 2,\n      showHelpWhenArgsMissing: true,\n      helpArg: \"help\",\n      headerContentSections: [\n        {\n          header: name,\n          content: `Turns command-line arguments into ${name} environment variables, then call 'eslint' or another command with them.`,\n        },\n      ],\n    },\n  )\n}\n\n// eslint-disable-next-line no-console\nconst stdout = (...args: unknown[]) => console.log(...args)\n// eslint-disable-next-line no-console\nconst stderr = (...args: unknown[]) => console.error(...args)\n\nfunction main() {\n  const argsConfig = parseArgs()\n\n  if (argsConfig.version) {\n    stdout(`v${version}`)\n    return\n  }\n\n  if (argsConfig.verbose) {\n    stderr(\"Parsed config:\", argsConfig)\n  }\n  // const args = SeatbeltArgs.fromConfig(argsConfig)\n  logStderr(\"command not implemented\")\n  process.exit(1)\n}\n\nif (require.main === module) {\n  main()\n}\n"],"mappings":"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","names":[]}