UNPKG

@qiwi/semantic-release-gh-pages-plugin

Version:
57 lines (56 loc) 2.15 kB
/** @module semantic-release-gh-pages-plugin */ import { __awaiter } from "tslib"; import AggregateError from 'aggregate-error'; import { isEqual } from 'lodash'; import path from 'node:path'; import { resolveConfig } from './config'; import { publish as ghpagesPublish } from './ghpages'; import { render } from './tpl'; import { isDirectory } from './util'; export * from './defaults'; let _config; export const verifyConditions = (pluginConfig, context) => __awaiter(void 0, void 0, void 0, function* () { const { logger } = context; const config = yield resolveConfig(pluginConfig, context, undefined, 'publish'); const { token, repo, src, ciBranch, docsBranch } = config; if (!docsBranch) { logger.log(`gh-pages [skipped]: 'docsBranch' is empty for ${ciBranch}`); return; } logger.log('verify gh-pages config'); if (!token) { throw new AggregateError(['env.GH_TOKEN is required by gh-pages plugin']); } if (!repo) { throw new AggregateError(['package.json repository.url does not match github.com pattern']); } if (!isDirectory(src)) { logger.error('Resolved docs src path=', path.resolve(src)); throw new AggregateError(['docs source directory does not exist']); } Object.assign(pluginConfig, config); _config = config; }); export const publish = (pluginConfig, context) => __awaiter(void 0, void 0, void 0, function* () { const config = yield resolveConfig(pluginConfig, context, undefined, 'publish'); const { logger, env, cwd } = context; const { msg, docsBranch, ciBranch } = config; const message = render(msg, context, logger); const pushOpts = Object.assign(Object.assign({}, config), { message, logger, env, cwd }); if (!docsBranch) { logger.log(`gh-pages [skipped]: 'docsBranch' is empty for ${ciBranch}`); return; } if (!isEqual(_config, config)) { yield verifyConditions(pluginConfig, context); } logger.log('Publishing docs via gh-pages'); return ghpagesPublish(pushOpts); }); export default { verifyConditions, publish };