botbook/node_modules/@azure/static-web-apps-cli/dist/cli/index.js

110 lines
4.7 KiB
JavaScript
Raw Normal View History

2024-09-04 13:13:15 -03:00
import dotenv from "dotenv";
dotenv.config();
import process from "node:process";
import chalk from "chalk";
import { Option, program } from "commander";
import path from "node:path";
import { notifyOnUpdate } from "../core/utils/update-notifier.js";
import { DEFAULT_CONFIG } from "../config.js";
import { configureOptions } from "../core/utils/options.js";
import { getCurrentSwaCliConfigFromFile, swaCliConfigFilename } from "../core/utils/cli-config.js";
import { getNodeMajorVersion } from "../core/func-core-tools.js";
import { logger } from "../core/utils/logger.js";
import { runCommand } from "../core/utils/command.js";
import { default as registerDeploy } from "./commands/deploy/register.js";
import { default as registerInit } from "./commands/init/register.js";
import { default as registerLogin } from "./commands/login/register.js";
import { default as registerStart } from "./commands/start/register.js";
import { default as registerBuild } from "./commands/build/register.js";
import { registerDocs } from "./commands/docs.js";
import { default as registerDb } from "./commands/db/init/register.js";
import { promptOrUseDefault } from "../core/prompts.js";
import { loadPackageJson } from "../core/utils/json.js";
const pkg = loadPackageJson();
function printWelcomeMessage(argv) {
const args = argv?.slice(2) || [];
const showVersion = args.includes("--version") || args.includes("-v") || args.includes("--ping");
const hideMessage = process.env.SWA_CLI_INTERNAL_COMMAND || showVersion;
if (!hideMessage) {
// don't use logger here: SWA_CLI_DEBUG is not set yet
console.log(``);
console.log(`Welcome to Azure Static Web Apps CLI (${chalk.green(pkg.version)})`);
console.log(``);
}
if (!showVersion) {
checkNodeVersion();
}
}
function checkNodeVersion() {
const nodeMajorVersion = getNodeMajorVersion();
const minVersion = parseInt(pkg.engines.node.substring(2, pkg.engines.node.indexOf(".")));
if (nodeMajorVersion < minVersion) {
logger.error(`You are using Node ${process.versions.node} but this version of the CLI requires Node ${minVersion} or higher.`);
logger.error(`Please upgrade your Node version.\n`, true);
}
}
export async function run(argv) {
printWelcomeMessage(argv);
notifyOnUpdate();
program
.name("swa")
.usage("[command] [options]")
.version(pkg.version, "-v, --version")
// SWA CLI common configuration options
.addOption(new Option("-V, --verbose [prefix]", "enable verbose output. Values are: silly,info,log,silent")
.preset(DEFAULT_CONFIG.verbose)
.default(DEFAULT_CONFIG.verbose))
.option("-c, --config <path>", "path to swa-cli.config.json file to use", path.relative(process.cwd(), swaCliConfigFilename))
.option("-cn, --config-name <name>", "name of the configuration to use", undefined)
.option("-g, --print-config", "print all resolved options", false)
.action(async (_options, command) => {
const options = await configureOptions(undefined, command.optsWithGlobals(), command, "init");
swaMagic(options);
})
.addHelpText("after", `
Type "swa" to get started and deploy your project.
Documentation:
https://aka.ms/swa/cli-local-development
`);
// Register commands
registerLogin(program);
registerStart(program);
registerDeploy(program);
registerInit(program);
registerBuild(program);
registerDocs(program);
registerDb(program);
program.showHelpAfterError();
program.addOption(new Option("--ping").hideHelp());
await program.parseAsync(argv);
}
export async function swaMagic(_options) {
try {
const hasLoadedConfig = getCurrentSwaCliConfigFromFile();
if (!hasLoadedConfig) {
logger.log(`${chalk.cyan("→")} No configuration found, running ${chalk.cyan("swa init")}...\n`);
runCommand("swa init");
}
logger.log(`${chalk.cyan("→")} Running ${chalk.cyan("swa build")}...\n`);
runCommand("swa build");
logger.log("");
const response = await promptOrUseDefault(false, {
type: "confirm",
name: "deploy",
message: "Do you want to deploy your app now?",
initial: true,
});
if (!response.deploy) {
logger.log(`\nWhen you'll be ready to deploy your app, just use ${chalk.cyan("swa")} again.`);
return;
}
logger.log(`\n${chalk.cyan("→")} Running ${chalk.cyan("swa deploy")}...\n`);
runCommand("swa deploy");
}
catch (_) {
// Pokemon, go catch'em all!
// (Errors are already caught an displayed in individual commands)
}
}
//# sourceMappingURL=index.js.map