aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/turbo-workspaces/src/cli.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/turbo-workspaces/src/cli.ts')
-rw-r--r--packages/turbo-workspaces/src/cli.ts53
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/turbo-workspaces/src/cli.ts b/packages/turbo-workspaces/src/cli.ts
new file mode 100644
index 0000000..3ae7a45
--- /dev/null
+++ b/packages/turbo-workspaces/src/cli.ts
@@ -0,0 +1,53 @@
+#!/usr/bin/env node
+
+import chalk from "chalk";
+import { Command } from "commander";
+
+import { summary, convert } from "./commands";
+import cliPkg from "../package.json";
+import { ConvertError } from "./errors";
+
+const workspacesCli = new Command();
+
+workspacesCli
+ .name("@turbo/workspaces")
+ .description("Tools for working with package manager workspaces")
+ .version(cliPkg.version, "-v, --version", "output the current version");
+
+// convert
+workspacesCli
+ .command("convert")
+ .description("Convert project between workspace managers")
+ .argument("[path]", "Project root")
+ .argument("[package-manager]", "Package manager to convert to")
+ .option(
+ "--skip-install",
+ "Do not run a package manager install after conversion",
+ false
+ )
+ .option("--dry", "Dry run (no changes are made to files)", false)
+ .option(
+ "--force",
+ "Bypass Git safety checks and forcibly run conversion",
+ false
+ )
+ .action(convert);
+
+// summary
+workspacesCli
+ .command("summary")
+ .description("Display a summary of the specified project")
+ .argument("[path]", "Project root")
+ .action(summary);
+
+workspacesCli.parseAsync().catch((error) => {
+ console.log();
+ if (error instanceof ConvertError) {
+ console.log(chalk.red(error.message));
+ } else {
+ console.log(chalk.red("Unexpected error. Please report it as a bug:"));
+ console.log(error.message);
+ }
+ console.log();
+ process.exit(1);
+});