UNPKG

vercel

Version:

The command-line interface for Vercel

197 lines (192 loc) • 5.11 kB
import { createRequire as __createRequire } from 'node:module'; import { fileURLToPath as __fileURLToPath } from 'node:url'; import { dirname as __dirname_ } from 'node:path'; const require = __createRequire(import.meta.url); const __filename = __fileURLToPath(import.meta.url); const __dirname = __dirname_(__filename); import { writeProjectSettings } from "./chunk-LVUE7LLE.js"; import { ensureLink } from "./chunk-N4WFAZKO.js"; import { autoInstallVercelPlugin, pullCommand } from "./chunk-ZKKIBUCU.js"; import { help } from "./chunk-MMF4BVAP.js"; import { VERCEL_DIR, VERCEL_DIR_PROJECT, envPullCommandLogic, humanizePath, parseTarget } from "./chunk-X775BOSL.js"; import { TelemetryClient } from "./chunk-4OEA5ILS.js"; import { stamp_default } from "./chunk-CO5D46AG.js"; import { getFlagsSpecification, parseArguments, printError } from "./chunk-4GQQJY5Y.js"; import { emoji, output_manager_default, prependEmoji } from "./chunk-ZQKJVHXY.js"; import { require_source } from "./chunk-S7KYDPEM.js"; import { __toESM } from "./chunk-TZ2YI2VH.js"; // src/commands/pull/index.ts var import_chalk = __toESM(require_source(), 1); import { join } from "path"; // src/util/telemetry/commands/pull/index.ts var PullTelemetryClient = class extends TelemetryClient { trackCliArgumentProjectPath(value) { if (value) { this.trackCliArgument({ arg: "projectPath", value: this.redactedValue }); } } trackCliOptionEnvironment(environment) { if (environment) { this.trackCliOption({ option: "environment", value: this.redactedTargetName(environment) }); } } trackCliOptionGitBranch(gitBranch) { if (gitBranch) { this.trackCliOption({ option: "git-branch", value: this.redactedValue }); } } trackCliFlagProd(isProduction) { if (isProduction) { this.trackCliFlag("prod"); } } trackCliFlagYes(yes) { if (yes) { this.trackCliFlag("yes"); } } }; // src/commands/pull/index.ts async function pullAllEnvFiles(environment, client, link, flags, cwd) { const environmentFile = `.env.${environment}.local`; await envPullCommandLogic( client, join(".vercel", environmentFile), !!flags["--yes"], environment, link, flags["--git-branch"], cwd, "vercel-cli:pull" ); return 0; } async function main(client) { let parsedArgs = null; const flagsSpecification = getFlagsSpecification(pullCommand.options); try { parsedArgs = parseArguments(client.argv.slice(2), flagsSpecification); } catch (error) { printError(error); return 1; } const telemetryClient = new PullTelemetryClient({ opts: { store: client.telemetryEventStore } }); if (parsedArgs.flags["--help"]) { telemetryClient.trackCliFlagHelp("pull"); output_manager_default.print(help(pullCommand, { columns: client.stderr.columns })); return 2; } const cwd = parsedArgs.args[1] || client.cwd; const autoConfirm = Boolean(parsedArgs.flags["--yes"]); const isProduction = Boolean(parsedArgs.flags["--prod"]); const environment = parseTarget({ flagName: "environment", flags: parsedArgs.flags }) || "development"; telemetryClient.trackCliArgumentProjectPath(parsedArgs.args[1]); telemetryClient.trackCliFlagYes(autoConfirm); telemetryClient.trackCliFlagProd(isProduction); telemetryClient.trackCliOptionGitBranch(parsedArgs.flags["--git-branch"]); telemetryClient.trackCliOptionEnvironment(parsedArgs.flags["--environment"]); const returnCode = await pullCommandLogic( client, cwd, autoConfirm, environment, parsedArgs.flags ); if (returnCode === 0 && !autoConfirm) { await autoInstallVercelPlugin(client); } return returnCode; } async function pullCommandLogic(client, cwd, autoConfirm, environment, flags) { const link = await ensureLink("pull", client, cwd, { autoConfirm, pullEnv: false }); if (typeof link === "number") { return link; } const { project, org, repoRoot } = link; let currentDirectory; if (repoRoot) { currentDirectory = join(repoRoot, project.rootDirectory || ""); } else { currentDirectory = cwd; } client.config.currentTeam = org.type === "team" ? org.id : void 0; const pullResultCode = await pullAllEnvFiles( environment, client, link, flags, currentDirectory ); if (pullResultCode !== 0) { return pullResultCode; } output_manager_default.print("\n"); output_manager_default.log("Downloading project settings"); const isRepoLinked = typeof repoRoot === "string"; await writeProjectSettings(currentDirectory, project, org, isRepoLinked); const settingsStamp = stamp_default(); output_manager_default.print( `${prependEmoji( `Downloaded project settings to ${import_chalk.default.bold( humanizePath(join(currentDirectory, VERCEL_DIR, VERCEL_DIR_PROJECT)) )} ${import_chalk.default.gray(settingsStamp())}`, emoji("success") )} ` ); return 0; } export { main, pullCommandLogic };