UNPKG

antora-confluence

Version:

A tool to convert and publish Antora documentation to Confluence

54 lines (53 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Enum_1 = require("./lib/constants/Enum"); const ConfluenceClientV1_1 = require("./lib/client/ConfluenceClientV1"); const PageService_1 = require("./lib/service/PageService"); const Logger_1 = require("./lib/Logger"); const StateService_1 = require("./lib/service/StateService"); const LOGGER = (0, Logger_1.getLogger)(); const publishToConfluence = async (destConfig, files, playbook) => { if (process.env.SKIP_CONFLUENCE) { LOGGER.info("Skip publishing to Confluence, because SKIP_CONFLUENCE was set"); return; } LOGGER.info(`Publishing ${playbook.site.title} to Confluence`); const outPutDir = playbook.output.dir || Enum_1.ANTORA_DEFAULTS.OUTPUT_DIR; const confluenceClient = new ConfluenceClientV1_1.ConfluenceClientV1({ editorVersion: destConfig.editorVersion || "v1", baseUrl: new URL(destConfig.confluenceApi), spaceKey: destConfig.confluenceSpace, ancestorId: destConfig.ancestorId, captainName: destConfig.captainName, }); await confluenceClient.init(); const pageStructure = new Map(); pageStructure.set("inventory", new Map()); pageStructure.set("flat", []); const state = await (0, StateService_1.initializeState)(confluenceClient); if (state) { const stateValues = Object.values(JSON.parse(state.value)); await (0, PageService_1.buildPageStructure)(files, pageStructure, destConfig); const removals = (0, PageService_1.getPagesToBeRemoved)(stateValues, pageStructure); if (removals.length > 0) { LOGGER.info("Removing untracked pages"); await (0, PageService_1.deletePages)(confluenceClient, removals); } const renames = (0, PageService_1.getRenamedPages)(stateValues, pageStructure); LOGGER.info("Publishing pages"); await (0, PageService_1.publish)(confluenceClient, outPutDir, pageStructure, destConfig.showBanner || false, pageStructure.get("flat"), renames); LOGGER.info("Writing state to Confluence"); await (0, StateService_1.updateState)(confluenceClient, { ...state, value: JSON.stringify(Object.fromEntries(pageStructure.get("inventory"))), }); } else { await (0, PageService_1.buildPageStructure)(files, pageStructure, destConfig); LOGGER.info("Publishing pages"); await (0, PageService_1.publish)(confluenceClient, outPutDir, pageStructure, destConfig.showBanner || false, pageStructure.get("flat")); await (0, StateService_1.createState)(confluenceClient, JSON.stringify(Object.fromEntries(pageStructure.get("inventory")))); } return {}; }; module.exports = publishToConfluence;