aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/create-turbo/src/cli.ts
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
commitdd84b9d64fb98746a230cd24233ff50a562c39c9 (patch)
treeb583261ef00b3afe72ec4d6dacb31e57779a6faf /packages/create-turbo/src/cli.ts
parent0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff)
downloadHydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz
HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip
Diffstat (limited to 'packages/create-turbo/src/cli.ts')
-rw-r--r--packages/create-turbo/src/cli.ts65
1 files changed, 65 insertions, 0 deletions
diff --git a/packages/create-turbo/src/cli.ts b/packages/create-turbo/src/cli.ts
new file mode 100644
index 0000000..1290a13
--- /dev/null
+++ b/packages/create-turbo/src/cli.ts
@@ -0,0 +1,65 @@
+#!/usr/bin/env node
+
+import chalk from "chalk";
+import { Command } from "commander";
+import notifyUpdate from "./utils/notifyUpdate";
+import { turboGradient, error } from "./logger";
+
+import { create } from "./commands";
+import cliPkg from "../package.json";
+
+const createTurboCli = new Command();
+
+// create
+createTurboCli
+ .name(chalk.bold(turboGradient("create-turbo")))
+ .description("Create a new Turborepo")
+ .usage(`${chalk.bold("<project-directory> <package-manager>")} [options]`)
+ .argument("[project-directory]")
+ .argument("[package-manager]")
+ .option(
+ "--skip-install",
+ "Do not run a package manager install after creating the project",
+ false
+ )
+ .option(
+ "--skip-transforms",
+ "Do not run any code transformation after creating the project",
+ false
+ )
+ .option(
+ "-e, --example [name]|[github-url]",
+ `
+ An example to bootstrap the app with. You can use an example name
+ from the official Turborepo repo or a GitHub URL. The URL can use
+ any branch and/or subdirectory
+`
+ )
+ .option(
+ "-p, --example-path <path-to-example>",
+ `
+ In a rare case, your GitHub URL might contain a branch name with
+ a slash (e.g. bug/fix-1) and the path to the example (e.g. foo/bar).
+ In this case, you must specify the path to the example separately:
+ --example-path foo/bar
+`
+ )
+ .version(cliPkg.version, "-v, --version", "output the current version")
+ .helpOption()
+ .action(create);
+
+createTurboCli
+ .parseAsync()
+ .then(notifyUpdate)
+ .catch(async (reason) => {
+ console.log();
+ if (reason.command) {
+ error(`${chalk.bold(reason.command)} has failed.`);
+ } else {
+ error("Unexpected error. Please report it as a bug:");
+ console.log(reason);
+ }
+ console.log();
+ await notifyUpdate();
+ process.exit(1);
+ });