index.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env node
  2. import { existsSync, readFileSync } from "node:fs";
  3. import { resolve } from "node:path";
  4. import { Command } from "commander";
  5. import { renderCommand } from "./commands/render.js";
  6. import { previewCommand } from "./commands/preview.js";
  7. import { templatesCommand } from "./commands/templates.js";
  8. import { voicesCommand } from "./commands/voices.js";
  9. import { initCommand } from "./commands/init.js";
  10. import { collectCommand } from "./commands/collect.js";
  11. // Auto-load .env from monorepo root (3 levels up from dist/index.js)
  12. const envPath = resolve(import.meta.dirname, "../../../.env");
  13. if (existsSync(envPath)) {
  14. const content = readFileSync(envPath, "utf-8");
  15. for (const line of content.split("\n")) {
  16. const trimmed = line.trim();
  17. if (!trimmed || trimmed.startsWith("#")) continue;
  18. const eq = trimmed.indexOf("=");
  19. if (eq < 0) continue;
  20. const key = trimmed.slice(0, eq).trim();
  21. const val = trimmed.slice(eq + 1).trim();
  22. if (!process.env[key]) {
  23. process.env[key] = val;
  24. }
  25. }
  26. }
  27. const program = new Command();
  28. program
  29. .name("pipeline")
  30. .description("Text-to-video generation pipeline")
  31. .version("0.0.1");
  32. program.addCommand(renderCommand);
  33. program.addCommand(collectCommand);
  34. program.addCommand(previewCommand);
  35. program.addCommand(templatesCommand);
  36. program.addCommand(voicesCommand);
  37. program.addCommand(initCommand);
  38. program.parse();