@shopify/create-app
Version:
A CLI tool to create a new Shopify app.
302 lines (294 loc) • 11.4 kB
JavaScript
import {
isTruthy
} from "./chunk-HNIAZN6U.js";
import {
joinPath
} from "./chunk-C3J4HVUN.js";
import {
init_cjs_shims
} from "./chunk-3XNI6LP4.js";
// ../cli-kit/dist/public/node/context/local.js
init_cjs_shims();
// ../cli-kit/dist/private/node/context/utilities.js
init_cjs_shims();
function isSet(variable) {
return !(variable === void 0 || variable.trim() === "");
}
function getCIMetadata(envName, envs) {
switch (envName) {
case "bitbucket":
return {
branch: envs.BITBUCKET_BRANCH,
build: envs.BITBUCKET_BUILD_NUMBER,
commitSha: envs.BITBUCKET_COMMIT,
run: envs.BITBUCKET_BUILD_NUMBER,
url: `https://bitbucket.org/${envs.BITBUCKET_WORKSPACE}/${envs.BITBUCKET_REPO_SLUG}/pipelines/results/${envs.BITBUCKET_BUILD_NUMBER}`
};
case "circleci":
return {
actor: envs.CIRCLE_USERNAME,
branch: envs.CIRCLE_BRANCH,
build: envs.CIRCLE_BUILD_NUM,
commitSha: envs.CIRCLE_SHA1,
run: envs.CIRCLE_WORKFLOW_ID,
url: envs.CIRCLE_BUILD_URL
};
case "github":
return {
actor: envs.GITHUB_ACTOR,
attempt: envs.GITHUB_RUN_ATTEMPT,
branch: envs.GITHUB_REF_NAME,
build: envs.GITHUB_RUN_ID,
commitSha: envs.GITHUB_SHA,
run: envs.GITHUB_RUN_ID,
runNumber: envs.GITHUB_RUN_NUMBER,
url: `${envs.GITHUB_SERVER_URL}/${envs.GITHUB_REPOSITORY}/actions/runs/${envs.GITHUB_RUN_ID}`
};
case "gitlab":
return {
actor: envs.GITLAB_USER_LOGIN,
branch: envs.CI_COMMIT_REF_NAME,
build: envs.CI_PIPELINE_ID,
commitSha: envs.CI_COMMIT_SHA,
commitMessage: envs.CI_COMMIT_MESSAGE,
run: envs.CI_RUNNER_ID,
url: envs.CI_PIPELINE_URL
};
case "buildkite":
return {
branch: envs.BUILDKITE_BRANCH,
build: envs.BUILDKITE_BUILD_NUMBER,
commitSha: envs.BUILDKITE_COMMIT,
commitMessage: envs.BUILDKITE_MESSAGE,
run: envs.BUILDKITE_BUILD_NUMBER,
url: envs.BUILDKITE_BUILD_URL
};
default:
return {};
}
}
// ../cli-kit/dist/private/node/constants.js
init_cjs_shims();
// ../../node_modules/.pnpm/env-paths@3.0.0/node_modules/env-paths/index.js
init_cjs_shims();
import path from "node:path";
import os from "node:os";
import process2 from "node:process";
var homedir = os.homedir(), tmpdir = os.tmpdir(), { env } = process2, macos = (name) => {
let library = path.join(homedir, "Library");
return {
data: path.join(library, "Application Support", name),
config: path.join(library, "Preferences", name),
cache: path.join(library, "Caches", name),
log: path.join(library, "Logs", name),
temp: path.join(tmpdir, name)
};
}, windows = (name) => {
let appData = env.APPDATA || path.join(homedir, "AppData", "Roaming"), localAppData = env.LOCALAPPDATA || path.join(homedir, "AppData", "Local");
return {
// Data/config/cache/log are invented by me as Windows isn't opinionated about this
data: path.join(localAppData, name, "Data"),
config: path.join(appData, name, "Config"),
cache: path.join(localAppData, name, "Cache"),
log: path.join(localAppData, name, "Log"),
temp: path.join(tmpdir, name)
};
}, linux = (name) => {
let username = path.basename(homedir);
return {
data: path.join(env.XDG_DATA_HOME || path.join(homedir, ".local", "share"), name),
config: path.join(env.XDG_CONFIG_HOME || path.join(homedir, ".config"), name),
cache: path.join(env.XDG_CACHE_HOME || path.join(homedir, ".cache"), name),
// https://wiki.debian.org/XDGBaseDirectorySpecification#state
log: path.join(env.XDG_STATE_HOME || path.join(homedir, ".local", "state"), name),
temp: path.join(tmpdir, username, name)
};
};
function envPaths(name, { suffix = "nodejs" } = {}) {
if (typeof name != "string")
throw new TypeError(`Expected a string, got ${typeof name}`);
return suffix && (name += `-${suffix}`), process2.platform === "darwin" ? macos(name) : process2.platform === "win32" ? windows(name) : linux(name);
}
// ../cli-kit/dist/private/node/constants.js
var identifier = "shopify-cli", cacheFolder = () => process.env.XDG_CACHE_HOME ? process.env.XDG_CACHE_HOME : envPaths(identifier).cache;
var environmentVariables = {
alwaysLogAnalytics: "SHOPIFY_CLI_ALWAYS_LOG_ANALYTICS",
alwaysLogMetrics: "SHOPIFY_CLI_ALWAYS_LOG_METRICS",
deviceAuth: "SHOPIFY_CLI_DEVICE_AUTH",
doctor: "SHOPIFY_CLI_DOCTOR",
enableCliRedirect: "SHOPIFY_CLI_ENABLE_CLI_REDIRECT",
env: "SHOPIFY_CLI_ENV",
noAnalytics: "SHOPIFY_CLI_NO_ANALYTICS",
optOutInstrumentation: "OPT_OUT_INSTRUMENTATION",
appAutomationToken: "SHOPIFY_APP_AUTOMATION_TOKEN",
partnersToken: "SHOPIFY_CLI_PARTNERS_TOKEN",
runAsUser: "SHOPIFY_RUN_AS_USER",
serviceEnv: "SHOPIFY_SERVICE_ENV",
skipCliRedirect: "SHOPIFY_CLI_SKIP_CLI_REDIRECT",
spinInstance: "SPIN_INSTANCE",
themeToken: "SHOPIFY_CLI_THEME_TOKEN",
unitTest: "SHOPIFY_UNIT_TEST",
verbose: "SHOPIFY_FLAG_VERBOSE",
// Variables to detect if the CLI is running in a cloud environment
codespaces: "CODESPACES",
codespaceName: "CODESPACE_NAME",
codespacePortForwardingDomain: "GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN",
gitpod: "GITPOD_WORKSPACE_URL",
cloudShell: "CLOUD_SHELL",
spinAppPort: "SERVER_PORT",
spinAppHost: "SPIN_APP_HOST",
organization: "SHOPIFY_CLI_ORGANIZATION",
identityToken: "SHOPIFY_CLI_IDENTITY_TOKEN",
refreshToken: "SHOPIFY_CLI_REFRESH_TOKEN",
otelURL: "SHOPIFY_CLI_OTEL_EXPORTER_OTLP_ENDPOINT",
themeKitAccessDomain: "SHOPIFY_CLI_THEME_KIT_ACCESS_DOMAIN",
json: "SHOPIFY_FLAG_JSON",
skipNetworkLevelRetry: "SHOPIFY_CLI_SKIP_NETWORK_LEVEL_RETRY",
maxRequestTimeForNetworkCalls: "SHOPIFY_CLI_MAX_REQUEST_TIME_FOR_NETWORK_CALLS",
disableImportScanning: "SHOPIFY_CLI_DISABLE_IMPORT_SCANNING"
}, defaultThemeKitAccessDomain = "theme-kit-access.shopifyapps.com", systemEnvironmentVariables = {
backendPort: "BACKEND_PORT"
}, pathConstants = {
executables: {
dev: "/opt/dev/bin/dev"
},
directories: {
cache: {
path: () => cacheFolder(),
vendor: {
path: () => joinPath(cacheFolder(), "vendor"),
binaries: () => joinPath(cacheFolder(), "vendor", "binaries")
}
}
}
}, sessionConstants = {
expirationTimeMarginInMinutes: 4
}, bugsnagApiKey = "9e1e6889176fd0c795d5c659225e0fae", reportingRateLimit = { limit: 300, timeout: { days: 1 } }, themeKitAccessDomain = process.env[environmentVariables.themeKitAccessDomain] ?? defaultThemeKitAccessDomain;
// ../cli-kit/dist/public/node/context/local.js
import { randomUUID } from "crypto";
import { homedir as homedir2, networkInterfaces } from "os";
async function lazyFileExists(path2) {
let { fileExists } = await import("./fs-ZG73KWF7.js");
return fileExists(path2);
}
async function lazyExec(command, args) {
let { exec } = await import("./system-KQM7CSD6.js");
await exec(command, args);
}
function isTerminalInteractive() {
return !!(process.stdout.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env));
}
function homeDirectory() {
return homedir2();
}
var memoizedIsVerbose, memoizedIsUnitTest;
function isDevelopment(env2 = process.env) {
return env2[environmentVariables.env] === "development";
}
function isVerbose(env2 = process.env) {
return env2 === process.env ? memoizedIsVerbose ??= isTruthy(env2[environmentVariables.verbose]) || process.argv.includes("--verbose") : isTruthy(env2[environmentVariables.verbose]) || process.argv.includes("--verbose");
}
async function isShopify(env2 = process.env) {
return Object.prototype.hasOwnProperty.call(env2, environmentVariables.runAsUser) ? !isTruthy(env2[environmentVariables.runAsUser]) : await lazyFileExists(pathConstants.executables.dev);
}
function isUnitTest(env2 = process.env) {
return env2 === process.env ? memoizedIsUnitTest ??= isTruthy(env2[environmentVariables.unitTest]) : isTruthy(env2[environmentVariables.unitTest]);
}
function analyticsDisabled(env2 = process.env) {
return isTruthy(env2[environmentVariables.noAnalytics]) || isTruthy(env2[environmentVariables.optOutInstrumentation]) || isDevelopment(env2);
}
function alwaysLogAnalytics(env2 = process.env) {
return isTruthy(env2[environmentVariables.alwaysLogAnalytics]);
}
function alwaysLogMetrics(env2 = process.env) {
return isTruthy(env2[environmentVariables.alwaysLogMetrics]);
}
function canRunDoctorRelease(env2 = process.env) {
return isTruthy(env2[environmentVariables.doctor]);
}
function gitpodURL(env2 = process.env) {
return env2[environmentVariables.gitpod];
}
function codespaceURL(env2 = process.env) {
return env2[environmentVariables.codespaceName];
}
function codespacePortForwardingDomain(env2 = process.env) {
return env2[environmentVariables.codespacePortForwardingDomain];
}
function isCloudEnvironment(env2 = process.env) {
return cloudEnvironment(env2).platform !== "localhost";
}
function themeToken(env2 = process.env) {
return env2[environmentVariables.themeToken];
}
function cloudEnvironment(env2 = process.env) {
return isSet(env2[environmentVariables.codespaces]) ? { platform: "codespaces", editor: !0 } : isSet(env2[environmentVariables.gitpod]) ? { platform: "gitpod", editor: !0 } : isSet(env2[environmentVariables.cloudShell]) ? { platform: "cloudShell", editor: !0 } : { platform: "localhost", editor: !1 };
}
async function hasGit() {
try {
return await lazyExec("git", ["--version"]), !0;
} catch {
return !1;
}
}
function ciPlatform(env2 = process.env) {
if (isTruthy(env2.CI)) {
let name = "unknown";
return isSet(env2.BITBUCKET_BUILD_NUMBER) ? name = "bitbucket" : isTruthy(env2.CIRCLECI) ? name = "circleci" : isSet(env2.GITHUB_ACTION) ? name = "github" : isTruthy(env2.GITLAB_CI) ? name = "gitlab" : isSet(env2.BUILDKITE) && (name = "buildkite"), {
isCI: !0,
name,
metadata: getCIMetadata(name, env2)
};
} else if (isTruthy(env2.TF_BUILD))
return {
isCI: !0,
name: "azure",
metadata: getCIMetadata("azure", env2)
};
return {
isCI: !1
};
}
async function macAddress() {
let emptyMac = "00:00:00:00:00:00", interfacesWithMac = Object.values(networkInterfaces()).flat().filter((iface) => !!(iface && iface.mac !== emptyMac));
return (interfacesWithMac.find((iface) => !iface.internal) ?? interfacesWithMac[0])?.mac ?? randomUUID();
}
function getThemeKitAccessDomain(env2 = process.env) {
let domain = env2[environmentVariables.themeKitAccessDomain];
return isSet(domain) ? domain : defaultThemeKitAccessDomain;
}
function opentelemetryDomain(env2 = process.env) {
let domain = env2[environmentVariables.otelURL];
return isSet(domain) ? domain : "https://otlp-http-production-cli.shopifysvc.com";
}
export {
envPaths,
environmentVariables,
systemEnvironmentVariables,
sessionConstants,
bugsnagApiKey,
reportingRateLimit,
themeKitAccessDomain,
isTerminalInteractive,
homeDirectory,
isDevelopment,
isVerbose,
isShopify,
isUnitTest,
analyticsDisabled,
alwaysLogAnalytics,
alwaysLogMetrics,
canRunDoctorRelease,
gitpodURL,
codespaceURL,
codespacePortForwardingDomain,
isCloudEnvironment,
themeToken,
cloudEnvironment,
hasGit,
ciPlatform,
macAddress,
getThemeKitAccessDomain,
opentelemetryDomain
};
//# sourceMappingURL=chunk-X2X377NR.js.map