@curvenote/cli
Version:
CLI Client library for Curvenote
35 lines (34 loc) ⢠1.69 kB
JavaScript
import chalk from 'chalk';
import { selectors } from 'myst-cli';
import { tic } from 'myst-cli-utils';
export async function promotePublicContent(session, cdnKey, domains) {
const siteConfig = selectors.selectCurrentSiteConfig(session.store.getState());
if (!siteConfig)
throw new Error('š§ No site config found.');
const toc = tic();
const errorDomains = [];
const useDomains = domains !== null && domains !== void 0 ? domains : siteConfig.domains;
const sites = useDomains
? (await Promise.all(useDomains.map(async (domain) => {
const resp = await session.post(`${session.config.editorApiUrl}/routers`, {
cdn: cdnKey,
domain,
});
if (resp.ok)
return resp.json;
errorDomains.push(`https://${domain}`);
return null;
}))).filter((s) => !!s)
: [];
if (errorDomains.length === 0)
session.log.info(`\n\n${chalk.bold.green('š Website successfully deployed')}`);
const allSites = sites.map((s) => `https://${s.id}`).join('\n - ');
if (allSites.length > 0) {
session.log.info(toc(`š Site promoted to ${sites.length} domain${sites.length > 1 ? 's' : ''} in %s:\n - ${allSites}`));
}
session.log.info('\nā ļø https://curve.space is in beta. Please ensure you have a copy of your content locally.');
if (errorDomains.length > 0) {
session.log.info(`\n\n${chalk.bold.red('ā ļø Could not deploy to some domains!')}`);
throw Error(`Error promoting site(s): ${errorDomains.join(', ')}. Please ensure you have permission or contact support@curvenote.com`);
}
}