sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
113 lines (112 loc) • 4.45 kB
JavaScript
;
var path = require("node:path"), zlib = require("node:zlib"), tar = require("tar-fs"), shouldAutoUpdate = require("./shouldAutoUpdate.js"), buildAction = require("./buildAction2.js"), deploySchemasAction = require("./deploySchemasAction.js"), schemaStoreOutStrings = require("./schemaStoreOutStrings.js"), helpers = require("./helpers.js");
function _interopDefaultCompat(e) {
return e && typeof e == "object" && "default" in e ? e : { default: e };
}
var path__default = /* @__PURE__ */ _interopDefaultCompat(path), zlib__default = /* @__PURE__ */ _interopDefaultCompat(zlib), tar__default = /* @__PURE__ */ _interopDefaultCompat(tar);
async function deployStudioAction(args, context) {
const {
apiClient,
workDir,
chalk,
output,
prompt,
cliConfig
} = context, flags = {
build: !0,
...args.extOptions
}, customSourceDir = args.argsWithoutOptions[0], sourceDir = path__default.default.resolve(process.cwd(), customSourceDir || path__default.default.join(workDir, "dist")), isAutoUpdating = shouldAutoUpdate.shouldAutoUpdate({
flags,
cliConfig,
output
}), installedSanityVersion = await helpers.getInstalledSanityVersion(), configStudioHost = cliConfig && "studioHost" in cliConfig && cliConfig.studioHost, client = apiClient({
requireUser: !0,
requireProject: !0
}).withConfig({
apiVersion: "v2024-08-01"
});
if (customSourceDir === "graphql")
throw new Error("Did you mean `sanity graphql deploy`?");
if (customSourceDir) {
let relativeOutput = path__default.default.relative(process.cwd(), sourceDir);
if (relativeOutput[0] !== "." && (relativeOutput = `./${relativeOutput}`), !(await helpers.dirIsEmptyOrNonExistent(sourceDir) || await prompt.single({
type: "confirm",
message: `"${relativeOutput}" is not empty, do you want to proceed?`,
default: !1
}))) {
output.print("Cancelled.");
return;
}
output.print(`Building to ${relativeOutput}
`);
}
let spinner = output.spinner("Checking project info").start(), userApplication;
try {
configStudioHost ? userApplication = await helpers.getOrCreateUserApplicationFromConfig({
client,
context,
spinner,
appHost: configStudioHost
}) : userApplication = await helpers.getOrCreateStudio({
client,
context,
spinner
});
} catch (err) {
if (err.message) {
output.error(chalk.red(err.message));
return;
}
throw helpers.debug("Error creating user application", err), err;
}
const shouldBuild = flags.build;
if (shouldBuild) {
const buildArgs = {
...args,
extOptions: flags,
argsWithoutOptions: [customSourceDir].filter(Boolean)
}, {
didCompile
} = await buildAction.default(buildArgs, context, {
basePath: "/"
});
if (!didCompile)
return;
}
await deploySchemasAction.deploySchemasAction({
"extract-manifest": shouldBuild,
"manifest-dir": `${sourceDir}/static`,
"schema-required": flags["schema-required"],
verbose: flags.verbose
}, {
...context,
manifestExtractor: schemaStoreOutStrings.createManifestExtractor(context)
}), spinner = output.spinner("Verifying local content").start();
try {
await helpers.checkDir(sourceDir), spinner.succeed();
} catch (err) {
throw spinner.fail(), helpers.debug("Error checking directory", err), err;
}
const parentDir = path__default.default.dirname(sourceDir), base = path__default.default.basename(sourceDir), tarball = tar__default.default.pack(parentDir, {
entries: [base]
}).pipe(zlib__default.default.createGzip());
spinner = output.spinner("Deploying to sanity.studio").start();
try {
const {
location
} = await helpers.createDeployment({
client,
applicationId: userApplication.id,
version: installedSanityVersion,
isAutoUpdating,
tarball
});
spinner.succeed(), output.print(`
Success! Studio deployed to ${chalk.cyan(location)}`), configStudioHost || (output.print(`
Add ${chalk.cyan(`studioHost: '${userApplication.appHost}'`)}`), output.print("to defineCliConfig root properties in sanity.cli.js or sanity.cli.ts"), output.print("to avoid prompting for hostname on next deploy."));
} catch (err) {
throw spinner.fail(), helpers.debug("Error deploying studio", err), err;
}
}
exports.default = deployStudioAction;
//# sourceMappingURL=deployAction2.js.map