diff --git a/packages/create/src/index.ts b/packages/create/src/index.ts index f426c88..3b16d01 100644 --- a/packages/create/src/index.ts +++ b/packages/create/src/index.ts @@ -1,7 +1,7 @@ import { defineCommand } from "citty"; import { createVanilla } from "./create-vanilla"; import * as p from "@clack/prompts"; -import { cancelable, spinnerify } from "./utils/ui"; +import { cancelable, spinnerify } from "@solid-cli/utils/ui"; import { createStart } from "./create-start"; import { getTemplatesList, StartTemplate, VanillaTemplate } from "./utils/constants"; import { detectPackageManager } from "@solid-cli/utils/package-manager"; diff --git a/packages/full-solid/src/start/index.ts b/packages/full-solid/src/start/index.ts index d3be639..b56c1d8 100644 --- a/packages/full-solid/src/start/index.ts +++ b/packages/full-solid/src/start/index.ts @@ -2,6 +2,7 @@ import { createRoute } from "@solid-cli/utils"; import { defineCommand } from "citty"; import * as p from "@clack/prompts"; import { green } from "picocolors"; +import { cancelable } from "@solid-cli/utils/ui" export const startCommands = defineCommand({ meta: { description: "Start-specific commands" }, subCommands: { route: defineCommand({ @@ -13,6 +14,11 @@ export const startCommands = defineCommand({ }, }, async run({ args: { path } }) { + path ||= await cancelable(p.text({ + message: "Route name", validate(value) { + if (value.length === 0) return "A route name is required" + }, + })) await createRoute(path as string); p.log.success(`Route ${green(path as string)} successfully created!`) }, diff --git a/packages/utils/package.json b/packages/utils/package.json index cc62f8f..4d1b4b0 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -55,6 +55,11 @@ "types": "./types/package-manager/index.d.ts", "import": "./dist/package-manager/index.mjs", "require": "./dist/package-manager/index.mjs" + }, + "./ui": { + "types": "./types/ui/index.d.ts", + "import": "./dist/ui/index.mjs", + "require": "./dist/ui/index.mjs" } }, "scripts": { diff --git a/packages/utils/src/ui/cancelable.ts b/packages/utils/src/ui/cancelable.ts new file mode 100644 index 0000000..35f0255 --- /dev/null +++ b/packages/utils/src/ui/cancelable.ts @@ -0,0 +1,14 @@ +import { log } from "@clack/prompts"; +export const cancelable = async ( + prompt: Promise, + cancelMessage: string = "Canceled", +): Promise => { + const value = await prompt; + + if (typeof value === "symbol") { + log.warn(cancelMessage); + process.exit(0); + } + + return value; +}; diff --git a/packages/utils/src/ui/index.ts b/packages/utils/src/ui/index.ts new file mode 100644 index 0000000..be0fed0 --- /dev/null +++ b/packages/utils/src/ui/index.ts @@ -0,0 +1,3 @@ +import { cancelable } from "./cancelable"; +import { spinnerify } from "./spinnerify"; +export { cancelable, spinnerify } \ No newline at end of file diff --git a/packages/create/src/utils/ui.ts b/packages/utils/src/ui/spinnerify.ts similarity index 66% rename from packages/create/src/utils/ui.ts rename to packages/utils/src/ui/spinnerify.ts index baf8b4b..baa53b4 100644 --- a/packages/create/src/utils/ui.ts +++ b/packages/utils/src/ui/spinnerify.ts @@ -1,4 +1,4 @@ -import { log, spinner } from "@clack/prompts"; +import { spinner } from "@clack/prompts"; type SpinnerItem = { startText: string; finishText: string; @@ -16,18 +16,4 @@ export async function spinnerify(spinners: SpinnerItem[] | SpinnerItem( - prompt: Promise, - cancelMessage: string = "Canceled", -): Promise => { - const value = await prompt; - - if (typeof value === "symbol") { - log.warn(cancelMessage); - process.exit(0); - } - - return value; -}; +} \ No newline at end of file