@wix/cli
Version:
CLI tool for building Wix sites and applications
649 lines (619 loc) • 23.6 kB
JavaScript
import { createRequire as _createRequire } from 'node:module';
const require = _createRequire(import.meta.url);
import {
extensionHandlers
} from "./chunk-K37QBDZK.js";
import {
docsExtensionTypeSchema
} from "./chunk-DJC6RMLY.js";
import "./chunk-FQM6PYRS.js";
import "./chunk-KGXWWZJW.js";
import "./chunk-SR7TTQEG.js";
import "./chunk-FLDCYVA4.js";
import "./chunk-TQF2C25T.js";
import {
log
} from "./chunk-35LXVE2A.js";
import "./chunk-BHWSM372.js";
import {
runCommand
} from "./chunk-7QJUAJW3.js";
import {
execa
} from "./chunk-NMCF7XG5.js";
import "./chunk-MHV22UIU.js";
import {
renderCommand,
runCommand as runCommand2
} from "./chunk-Z7UA4ACU.js";
import "./chunk-7BABMGCW.js";
import "./chunk-OQJA5FSX.js";
import {
NO_TTY_JSON_OUTPUT_OPTION,
parseStdErr
} from "./chunk-RJAXCJJK.js";
import {
InvalidArgumentError,
Option,
createCommand
} from "./chunk-4CMTZJ25.js";
import "./chunk-AAUVYJJT.js";
import "./chunk-K6JLY75P.js";
import "./chunk-KCDAY54L.js";
import "./chunk-FYLO6WOU.js";
import "./chunk-3B6VL2WO.js";
import "./chunk-7QTVQZAE.js";
import "./chunk-2KP5J2KZ.js";
import "./chunk-CCWE4DS6.js";
import "./chunk-U5H3SP3I.js";
import "./chunk-TIVTYCB2.js";
import "./chunk-RPTAJN5Y.js";
import "./chunk-UC5LTXTA.js";
import "./chunk-5VIJC5EU.js";
import "./chunk-MZDJNQLB.js";
import {
require_react
} from "./chunk-QNHANFRW.js";
import "./chunk-AFPDHQYI.js";
import "./chunk-HYKBBZLS.js";
import "./chunk-C5RTKQVL.js";
import "./chunk-4EJ5VQTT.js";
import "./chunk-4UTFAKA5.js";
import "./chunk-LU3R3EBR.js";
import "./chunk-XZUGLEBK.js";
import "./chunk-TLLAD5LU.js";
import {
external_exports
} from "./chunk-SDLCFZRL.js";
import {
CliError,
CliErrorCode,
cliErrorToError
} from "./chunk-CO5A7CZG.js";
import {
__toESM,
init_esm_shims
} from "./chunk-EXLZF52D.js";
// ../cli-astro-commands/src/index.ts
init_esm_shims();
// ../cli-astro-commands/src/commands/root-command.ts
init_esm_shims();
// ../cli-astro-commands/src/commands/build.ts
init_esm_shims();
var buildCommand = (services, cliVersion) => createCommand("build").description(
"Invoke the astro build process, forwarding all command-line arguments."
).allowExcessArguments(true).allowUnknownOption(true).passThroughOptions(true).action(async (_, command) => {
const { execa: execa2 } = await import("./execa-CMKY4VHZ.js");
const { getRepoType, createPackageManager } = await import("./src-WY5ZGMIZ.js");
const { runCommand: runCommand3 } = await import("./render-command-MRAQD75S.js");
await runCommand3(command, services, cliVersion, async (model) => {
const repoType = await getRepoType(model.projectFolder);
const packageManager = await createPackageManager(repoType);
const { file, args } = packageManager.getRunBinaryCmd(
["astro", "build"].concat(command.args)
);
try {
const subprocess = execa2(file, args, {
cwd: model.projectFolder,
stdin: "inherit",
stdout: "inherit",
stderr: "pipe"
});
subprocess.stderr?.pipe(process.stderr);
await subprocess;
} catch (e) {
const failedToBuildError = new CliError({
code: CliErrorCode.FailedToBuildAstroApp(),
cause: e
});
if (model.pluginsInterface) {
const projectError = parseStdErr(e);
const errContext = projectError != null ? {
type: "project",
errors: [projectError]
} : {
type: "cli-user",
error: cliErrorToError(failedToBuildError)
};
void model.pluginsInterface.eventsEmitter.emit(
"cli-error",
errContext
);
}
throw failedToBuildError;
}
});
});
// ../cli-astro-commands/src/commands/connect.tsx
init_esm_shims();
var import_react = __toESM(require_react(), 1);
var connectCommand = (services, cliVersion) => {
return createCommand("connect").description("Connect your project to GitHub to enable Wix Vibe editing").action(async (options, command) => {
const { renderCommand: renderCommand2 } = await import("./render-command-MRAQD75S.js");
const { ConnectWixVibeCommand } = await import("./ConnectWixVibeCommand-QE3SYEDU.js");
await renderCommand2(
command,
services,
cliVersion,
/* @__PURE__ */ import_react.default.createElement(ConnectWixVibeCommand, null)
);
});
};
// ../cli-astro-commands/src/commands/env.ts
init_esm_shims();
// ../cli-astro-commands/src/commands/env-pull.tsx
init_esm_shims();
var import_react2 = __toESM(require_react(), 1);
var envPullCommand = (services, cliVersion) => {
return createCommand("pull").description(
"Pulls environment variables and merge them into .env.local file"
).addOption(
new Option(NO_TTY_JSON_OUTPUT_OPTION, "Output in JSON format").hideHelp()
).action(async (opts, command) => {
if (opts.json) {
return runCommand2(command, services, cliVersion, async (model) => {
const { nonInteractiveEnvPull } = await import("./env-pull-BONVR3QB.js");
return nonInteractiveEnvPull(services, model);
});
}
const { EnvPullCommand } = await import("./EnvPullCommand-KJQUW6BZ.js");
await renderCommand(command, services, cliVersion, /* @__PURE__ */ import_react2.default.createElement(EnvPullCommand, null));
});
};
// ../cli-astro-commands/src/commands/env-set.tsx
init_esm_shims();
var import_react3 = __toESM(require_react(), 1);
var envSetCommand = (services, cliVersion) => {
return createCommand("set").description("Sets environment variable").requiredOption("--key <key>", "Name of the variable").requiredOption("--value <value>", "Value of the variable").action(async (opts, command) => {
const { EnvSetCommand } = await import("./EnvSetCommand-FD3DZ7EU.js");
const variable = { key: opts.key, value: opts.value };
await renderCommand(
command,
services,
cliVersion,
/* @__PURE__ */ import_react3.default.createElement(EnvSetCommand, { variable })
);
});
};
// ../cli-astro-commands/src/commands/env-remove.tsx
init_esm_shims();
var import_react4 = __toESM(require_react(), 1);
var envRemoveCommand = (services, cliVersion) => {
return createCommand("remove").description("Removes an environment variable").requiredOption("--key <key>", "Name of the variable").action(async (opts, command) => {
const { EnvRemoveCommand } = await import("./EnvRemoveCommand-XOBBPVUB.js");
await renderCommand(
command,
services,
cliVersion,
/* @__PURE__ */ import_react4.default.createElement(EnvRemoveCommand, { variableKey: opts.key })
);
});
};
// ../cli-astro-commands/src/commands/env.ts
var envCommand = (services, cliVersion) => {
return createCommand("env").description("Work with environment variables").addCommand(envPullCommand(services, cliVersion), { isDefault: true }).addCommand(envSetCommand(services, cliVersion)).addCommand(envRemoveCommand(services, cliVersion));
};
// ../cli-astro-commands/src/commands/preview.tsx
init_esm_shims();
var import_react5 = __toESM(require_react(), 1);
// ../cli-astro-commands/src/commands/validations.ts
init_esm_shims();
function validateBase(value) {
const parsed = external_exports.string().url().safeParse(value);
if (parsed.success) {
return parsed.data;
}
throw new InvalidArgumentError("Value must be a valid URL");
}
var LABEL_MAX_LENGTH = 200;
function validateLabel(value) {
const parsed = external_exports.string().max(LABEL_MAX_LENGTH).safeParse(value);
if (parsed.success) {
return parsed.data;
}
throw new InvalidArgumentError(
`Value must be up to ${LABEL_MAX_LENGTH} characters`
);
}
function validateReleaseComment(value) {
const parsed = external_exports.string().max(250).safeParse(value);
if (parsed.success) {
return parsed.data;
}
throw new InvalidArgumentError(
"The comment is limited to a maximum of 250 characters"
);
}
function validateDocsExtensionType(value) {
const parsed = docsExtensionTypeSchema.safeParse(value);
if (parsed.success) {
return parsed.data;
}
throw new InvalidArgumentError("Value must be a valid extension type");
}
function validateGenerateSchemaExtensionType(value) {
if (Object.hasOwn(extensionHandlers, value)) {
return value;
}
throw new InvalidArgumentError("Value must be a valid extension type");
}
function validateValidJson(rawJson) {
try {
const jsonObject = JSON.parse(rawJson);
return jsonObject;
} catch {
throw new InvalidArgumentError("Value must be a valid JSON");
}
}
// ../cli-astro-commands/src/commands/preview.tsx
var previewCommand = (services, cliVersion) => {
return createCommand("preview").description("Create a preview version of your application").addOption(
new Option(
"--base-url <url>",
"The base url for when static files have been uploaded to an external cdn"
).argParser(validateBase).hideHelp()
).addOption(
new Option("-l, --label <label>", "A custom label for this preview").argParser(validateLabel).hideHelp()
).addOption(
new Option(
"--preview-id <preview-id>",
"An existing preview override id to update"
).hideHelp()
).addOption(new Option("--site <site>", "(deprecated)").hideHelp()).addOption(
new Option(NO_TTY_JSON_OUTPUT_OPTION, "Output in JSON format").hideHelp()
).action(async (options, command) => {
const { baseUrl, json, label, previewId } = options;
const { renderCommand: renderCommand2, runCommand: runCommand3 } = await import("./render-command-MRAQD75S.js");
if (json) {
return runCommand3(command, services, cliVersion, async (model) => {
const { nonInteractivePreview } = await import("./preview-DC3LTMS6.js");
return nonInteractivePreview(services, model, {
baseUrl,
label,
previewId
});
});
}
const { PreviewCommand } = await import("./PreviewCommand-OMVX7LGJ.js");
await renderCommand2(
command,
services,
cliVersion,
/* @__PURE__ */ import_react5.default.createElement(
PreviewCommand,
{
baseUrl,
label,
previewId,
environment: "preview"
}
)
);
});
};
// ../cli-astro-commands/src/commands/promote.tsx
init_esm_shims();
var import_react6 = __toESM(require_react(), 1);
var promoteCommand = (services, cliVersion) => {
return createCommand("promote").addOption(
new Option(
"--base-url <url>",
"The base url for when static files have been uploaded to an external cdn"
).argParser(validateBase).hideHelp()
).addOption(
new Option("-l, --label <label>", "A custom label for this preview").argParser(validateLabel).hideHelp()
).action(async (options, command) => {
const { baseUrl, label } = options;
const { renderCommand: renderCommand2 } = await import("./render-command-MRAQD75S.js");
const { PromoteCommand } = await import("./PromoteCommand-LZXMNSJY.js");
await renderCommand2(
command,
services,
cliVersion,
/* @__PURE__ */ import_react6.default.createElement(PromoteCommand, { baseUrl, label })
);
});
};
// ../cli-astro-commands/src/commands/release.tsx
init_esm_shims();
var import_react7 = __toESM(require_react(), 1);
var releaseCommand = (services, cliVersion) => {
return createCommand("release").description("Release a new version of your application").addOption(
new Option(
"--base-url <url>",
"The base url for when static files have been uploaded to an external cdn"
).argParser(validateBase).hideHelp()
).addOption(
new Option("-l, --label <label>", "A custom label for this preview").argParser(validateLabel).hideHelp()
).option(
"-c, --comment <comment>",
"The comment for your release version, not visible by users",
validateReleaseComment
).addOption(
new Option(
"-t, --version-type <type>",
"The type of version you would like to create"
).choices(["major", "minor"])
).action(async (options, command) => {
const { renderCommand: renderCommand2 } = await import("./render-command-MRAQD75S.js");
const { ReleaseCommand } = await import("./ReleaseCommand-B4LVYLQH.js");
const { baseUrl, label, comment } = options;
const versionType = options.versionType ? {
major: "MAJOR" /* MAJOR */,
minor: "MINOR" /* MINOR */
}[options.versionType] : void 0;
await renderCommand2(
command,
services,
cliVersion,
/* @__PURE__ */ import_react7.default.createElement(
ReleaseCommand,
{
baseUrl,
label,
comment,
versionType
}
)
);
});
};
// ../cli-astro-commands/src/commands/dev.tsx
init_esm_shims();
var import_react8 = __toESM(require_react(), 1);
var devCommand = (services, cliVersion) => {
return createCommand("dev").option(
"--port <port>",
"Specify which port to run on. Defaults to 4321.",
(value) => {
return parseInt(value, 10);
}
).option(
"--allowed-hosts <allowedHosts>",
"Specify a comma-separated list of allowed hosts or allow any hostname."
).addOption(
new Option(
"--base-url <url>",
"The base url for when static files have been uploaded to an external cdn"
).argParser(validateBase).hideHelp()
).action(async (options, command) => {
const { DevCommand } = await import("./DevCommand-G54O4VW4.js");
const { renderCommand: renderCommand2 } = await import("./render-command-MRAQD75S.js");
await renderCommand2(
command,
services,
cliVersion,
/* @__PURE__ */ import_react8.default.createElement(
DevCommand,
{
port: options.port,
allowedHosts: options.allowedHosts,
serverExposedUrl: options.baseUrl
}
)
);
});
};
// ../cli-astro-commands/src/commands/generate.tsx
init_esm_shims();
var import_react10 = __toESM(require_react(), 1);
// ../cli-astro-commands/src/commands/generate-manifest.tsx
init_esm_shims();
var import_react9 = __toESM(require_react(), 1);
var generateManifestCommand = (services, cliVersion) => createCommand("manifest").description("Generate manifest for project extensions").action(async (_, command) => {
const { renderCommand: renderCommand2 } = await import("./render-command-MRAQD75S.js");
const { GenerateManifestCommand } = await import("./GenerateManifestCommand-NR4DWXYE.js");
await renderCommand2(
command,
services,
cliVersion,
/* @__PURE__ */ import_react9.default.createElement(GenerateManifestCommand, null)
);
});
// ../cli-astro-commands/src/commands/generate.tsx
var generateCommand = (services, cliVersion) => {
return createCommand("generate").description("Generate a new extension for your project").addCommand(generateManifestCommand(services, cliVersion), { hidden: true }).addOption(
new Option("--type <type>", "Extension type to generate").argParser(validateDocsExtensionType).conflicts("params")
).addOption(
new Option(
"--params <json>",
"Generate an extension non-interactively from a JSON object"
).conflicts("type").implies({ json: true }).argParser(validateValidJson)
).addOption(
new Option(NO_TTY_JSON_OUTPUT_OPTION, "Output in JSON format").hideHelp()
).addOption(
new Option(
"--experimental",
"Include experimental generators in the picker"
).hideHelp()
).action(async (options, command) => {
const { type, params } = options;
const { runCommand: runCommand3, renderCommand: renderCommand2 } = await import("./render-command-MRAQD75S.js");
if (params !== void 0) {
await runCommand3(command, services, cliVersion, async (model) => {
const { nonInteractiveGenerateExtension } = await import("./generate-extensions-Z7NJKAVX.js");
try {
const result = await nonInteractiveGenerateExtension(
services,
model,
params
);
log(JSON.stringify({ success: true, ...result }));
} catch (e) {
log(
JSON.stringify({
success: false,
error: e instanceof Error ? e.message : String(e)
})
);
throw e;
}
});
} else {
const { GenerateCommand } = await import("./GenerateCommand-XPKALRJD.js");
await renderCommand2(
command,
services,
cliVersion,
/* @__PURE__ */ import_react10.default.createElement(GenerateCommand, { docsExtensionType: type })
);
}
});
};
// ../cli-astro-commands/src/commands/translation.tsx
init_esm_shims();
// ../cli-astro-commands/src/commands/translation-pull.tsx
init_esm_shims();
var import_react11 = __toESM(require_react(), 1);
var translationPullCommand = (services, cliVersion) => {
return createCommand("pull").description(
"Pulls Wix Multilingual translations and saves them to your project directory"
).addOption(
new Option(NO_TTY_JSON_OUTPUT_OPTION, "Output in JSON format").hideHelp()
).action(async (opts, command) => {
if (opts.json) {
return runCommand2(command, services, cliVersion, async (model) => {
const { nonInteractiveTranslationPull } = await import("./translation-pull-TZ3XYKAP.js");
return nonInteractiveTranslationPull(services, model);
});
}
const { TranslationPullCommand } = await import("./TranslationPullCommand-VUWHY6PW.js");
await renderCommand(
command,
services,
cliVersion,
/* @__PURE__ */ import_react11.default.createElement(TranslationPullCommand, null)
);
});
};
// ../cli-astro-commands/src/commands/translation-push.tsx
init_esm_shims();
var import_react12 = __toESM(require_react(), 1);
var translationPushCommand = (services, cliVersion) => {
return createCommand("push").description(
"Pushes local translation file `src/translations.json` to Wix Multilingual"
).addOption(
new Option(NO_TTY_JSON_OUTPUT_OPTION, "Output in JSON format").hideHelp()
).action(async (opts, command) => {
if (opts.json) {
return runCommand2(command, services, cliVersion, async (model) => {
const { nonInteractiveTranslationPush } = await import("./translation-push-FVPGLZVQ.js");
return nonInteractiveTranslationPush(services, model);
});
}
const { TranslationPushCommand } = await import("./TranslationPushCommand-AH76RLLA.js");
await renderCommand(
command,
services,
cliVersion,
/* @__PURE__ */ import_react12.default.createElement(TranslationPushCommand, null)
);
});
};
// ../cli-astro-commands/src/commands/translation.tsx
var translationCommand = (services, cliVersion) => {
return createCommand("translation").description("Work with site translations").addCommand(translationPullCommand(services, cliVersion)).addCommand(translationPushCommand(services, cliVersion));
};
// ../cli-astro-commands/src/commands/skills.ts
init_esm_shims();
// ../cli-astro-commands/src/commands/skills-add.ts
init_esm_shims();
import { createRequire } from "node:module";
import { dirname } from "node:path";
var require2 = createRequire(import.meta.url);
function resolveSkillsSource() {
return dirname(require2.resolve("@wix/agent-skills/package.json"));
}
var skillsAddCommand = (services, cliVersion) => {
const npxExecutable = process.env.WIX_CLI_NPX_PATH ?? "npx";
return createCommand("add").description("Add Wix skills to your project").action(async (_, command) => {
const { runCommand: runCommand3 } = await import("./render-command-MRAQD75S.js");
const args = [
"--yes",
"skills",
"add",
resolveSkillsSource(),
"-y"
];
await runCommand3(command, services, cliVersion, async (model) => {
try {
await execa(npxExecutable, [...args], {
cwd: model.projectFolder,
stdio: "inherit"
});
} catch (e) {
throw new CliError({
code: CliErrorCode.FailedToRunExternalCommand({
file: npxExecutable,
args: [...args]
}),
cause: e
});
}
});
});
};
// ../cli-astro-commands/src/commands/skills-update.ts
init_esm_shims();
var skillsUpdateCommand = (services, cliVersion) => {
const args = ["--yes", "skills", "update"];
const npxExecutable = process.env.WIX_CLI_NPX_PATH ?? "npx";
return createCommand("update").description("Update installed skills to the latest version").action(async (_, command) => {
const { runCommand: runCommand3 } = await import("./render-command-MRAQD75S.js");
await runCommand3(command, services, cliVersion, async (model) => {
try {
await runCommand(`${npxExecutable} ${args.join(" ")}`, {
cwd: model.projectFolder,
output: process.stdout
});
} catch (e) {
throw new CliError({
code: CliErrorCode.FailedToRunExternalCommand({
file: "npx",
args: [...args]
}),
cause: e
});
}
});
});
};
// ../cli-astro-commands/src/commands/skills.ts
var skillsCommand = (services, cliVersion) => {
return createCommand("skills").description("Manage Wix skills").addCommand(skillsAddCommand(services, cliVersion)).addCommand(skillsUpdateCommand(services, cliVersion));
};
// ../cli-astro-commands/src/commands/schema.ts
init_esm_shims();
// ../cli-astro-commands/src/commands/schema-generate-extensions.ts
init_esm_shims();
var schemaGenerateExtensionsCommand = (services, cliVersion) => createCommand("generate").description(
"Print a JSON schema of all available extension types and their required inputs"
).addOption(
new Option(
"--type <type>",
"Print the schema for a single extension type instead of the full schema"
).argParser(validateGenerateSchemaExtensionType)
).addOption(
new Option(NO_TTY_JSON_OUTPUT_OPTION, "Output in JSON format").default(true).hideHelp()
).action(async (opts, command) => {
await runCommand2(command, services, cliVersion, async (model) => {
const { nonInteractiveSchemaGenerateExtensions } = await import("./schema-generate-extensions-OEO5WQA4.js");
return nonInteractiveSchemaGenerateExtensions(services, model, {
type: opts.type
});
});
});
// ../cli-astro-commands/src/commands/schema.ts
var schemaCommand = (services, cliVersion) => createCommand("schema").description("Print machine-readable schemas for CLI commands").addCommand(schemaGenerateExtensionsCommand(services, cliVersion));
// ../cli-astro-commands/src/commands/root-command.ts
var getRootCommand = async (services, cliVersion) => {
return createCommand("astro").enablePositionalOptions(true).addCommand(buildCommand(services, cliVersion)).addCommand(connectCommand(services, cliVersion)).addCommand(envCommand(services, cliVersion)).addCommand(previewCommand(services, cliVersion)).addCommand(skillsCommand(services, cliVersion)).addCommand(promoteCommand(services, cliVersion), { hidden: true }).addCommand(releaseCommand(services, cliVersion)).addCommand(devCommand(services, cliVersion)).addCommand(generateCommand(services, cliVersion)).addCommand(schemaCommand(services, cliVersion)).addCommand(translationCommand(services, cliVersion), { hidden: true });
};
var getLimitedRootCommand = async (services, cliVersion) => {
return createCommand("astro").enablePositionalOptions(true).addCommand(previewCommand(services, cliVersion)).addCommand(releaseCommand(services, cliVersion));
};
export {
getLimitedRootCommand,
getRootCommand
};
//# sourceMappingURL=src-FUHDHZIN.js.map