UNPKG

@curvenote/cli

Version:
35 lines (34 loc) • 1.69 kB
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`); } }