@sanity/plugin-kit
10.0.710.0.8
dist/init-Z89_NXF9.js+
dist/init-Z89_NXF9.jsNew file+103
Index: package/dist/init-Z89_NXF9.js
===================================================================
--- package/dist/init-Z89_NXF9.js
+++ package/dist/init-Z89_NXF9.js
@@ -0,0 +1,103 @@
+import { t as cliName } from "./constants-BIVJp2Jy.js";
+import { t as log_default } from "./log-2MbSIFbq.js";
+import { D as ensureDir, F as prompt, k as isEmptyish } from "./package-8cUY5BVf.js";
+import { a as presetHelpList, n as init, r as initFlags, t as findStudioConfig } from "./studio-detect-DtHmuJGM.js";
+import meow from "meow";
+import path from "path";
+import { execa } from "execa";
+function npmIsAvailable() {
+ return execa("npm", ["-v"]).then(() => !0).catch(() => !1);
+}
+function yarnIsAvailable() {
+ return execa("yarn", ["-v"]).then(() => !0).catch(() => !1);
+}
+function pnpmAvailable() {
+ return execa("pnpm", ["-v"]).then(() => !0).catch(() => !1);
+}
+async function promptForPackageManager() {
+ let [npm, yarn, pnpm] = await Promise.all([
+ npmIsAvailable(),
+ yarnIsAvailable(),
+ pnpmAvailable()
+ ]), choices = [
+ npm && "npm",
+ yarn && "yarn",
+ pnpm && "pnpm"
+ ].filter(Boolean);
+ return choices.length < 2 ? choices[0] || "npm" : prompt("Which package manager do you prefer?", {
+ choices: choices.map((value) => ({
+ value,
+ name: value
+ })),
+ default: choices[0]
+ });
+}
+async function installDependencies(pm, { cwd }) {
+ try {
+ let { exitCode } = await execa(pm, ["install"], {
+ cwd,
+ stdio: "inherit",
+ reject: !1
+ });
+ return exitCode === 0;
+ } catch {
+ return !1;
+ }
+}
+const help = `
+Usage
+ $ ${cliName} init [dir] [<args>]
+
+Options
+ --no-oxlint Disables oxlint config and dependencies from being added
+ --no-oxfmt Disables oxfmt config and dependencies from being added
+ --no-typescript Disables typescript config and dependencies from being added
+ --no-license Disables LICENSE + package.json license field from being added
+ --no-editorconfig Disables .editorconfig from being added
+ --no-gitignore Disables .gitignore from being added
+ --no-scripts Disables scripts from being added to package.json
+ --no-install Disables automatically running package manager install
+
+ --name [package-name] Use the provided package-name
+ --author [name] Use the provided author
+ --repo [url] Use the provided repo url
+ --license [spdx] Use the license with the given SPDX identifier
+ --force No prompt when overwriting files
+
+ --preset [preset-name] Adds config and files from a named preset. --preset can be supplied multiple times.
+ The following presets are available:
+${presetHelpList(30)}
+
+Examples
+ # Initialize a new plugin in the current directory
+ $ ${cliName} init
+
+ # Initialize a plugin in the directory ~/my-plugin
+ $ ${cliName} init ~/my-plugin
+
+ # Don't add oxlint or oxfmt
+ $ ${cliName} init --no-oxlint --no-oxfmt
+`;
+async function run({ argv }) {
+ let cli = meow(help, {
+ importMeta: import.meta,
+ flags: initFlags,
+ argv,
+ description: "Initialize a new Sanity plugin"
+ }), basePath = path.resolve(cli.input[0] || process.cwd()), { configFile } = await findStudioConfig(basePath);
+ if (configFile) throw Error(`${configFile} exists - are you trying to init into a studio instead of a plugin?`);
+ if (log_default.info("Initializing new plugin in \"%s\"", basePath), !cli.flags.force && !await isEmptyish(basePath) && !await prompt("Directory is not empty, proceed?", {
+ type: "confirm",
+ default: !1
+ })) {
+ log_default.error("Directory is not empty. Cancelled.");
+ return;
+ }
+ await ensureDir(basePath), await init({
+ basePath,
+ flags: cli.flags
+ }), cli.flags.install ? await installDependencies(await promptForPackageManager(), { cwd: basePath }) ? log_default.info("Done!") : log_default.error("Failed to install dependencies, try manually running `npm install`") : log_default.info("Dependency installation skipped.");
+}
+export { run as default };
+
+//# sourceMappingURL=init-Z89_NXF9.js.map
\ No newline at end of file