antora-confluence
Version:
A tool to convert and publish Antora documentation to Confluence
54 lines (53 loc) • 2.78 kB
JavaScript
;
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;