UNPKG

@atlassian/wrm-troubleshooting

Version:

A tool that can help you with troubleshooting the configuration of webpack and Atlassian P2 project.

68 lines 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPluginWebResourceDefinitions = getPluginWebResourceDefinitions; exports.getGeneratedModuleDescriptorPaths = getGeneratedModuleDescriptorPaths; exports.removeOldModuleDescriptors = removeOldModuleDescriptors; exports.getFullWebResourceKey = getFullWebResourceKey; const fs_1 = require("fs"); const globWithOptions_1 = require("./globWithOptions"); const pom_1 = require("./pom"); const xmlParser_1 = require("./xmlParser"); async function getPluginWebResourceDefinitions(pomFile, pomXml) { const generatedXmlPaths = await getGeneratedModuleDescriptorPaths(pomFile, pomXml); const wrmWebResources = []; for (const xmlFile of generatedXmlPaths) { const webResources = await getWebResourcesFromFile(xmlFile); if (webResources instanceof Error) { return webResources; } wrmWebResources.push(...webResources); } return wrmWebResources.sort((a, b) => a.key.localeCompare(b.key)); } const WEB_RESOURCE_XML_KEY = 'web-resource'; async function getWebResourcesFromFile(xmlFile) { const xml = await (0, xmlParser_1.parseXmlFromFile)(xmlFile); if (xml instanceof Error) { return xml; } const rootKey = Object.keys(xml)[0]; const project = xml[rootKey][0]; if (!(WEB_RESOURCE_XML_KEY in project)) { return []; } const webResourcesXml = project[WEB_RESOURCE_XML_KEY]; return webResourcesXml.map((webResourceXml) => { const webResource = { key: webResourceXml.attrs.key, }; return webResource; }); } async function getGeneratedModuleDescriptorPaths(pomFile, pomXml) { const pomScanFolders = (0, pom_1.getAbsoluteScanFoldersConfig)(pomXml, pomFile); return getXmlFilesFromDirectory(pomScanFolders); } async function removeOldModuleDescriptors(pomFile, pomXml) { const generatedXmlPaths = await getGeneratedModuleDescriptorPaths(pomFile, pomXml); // Delete files in parallel await Promise.all(generatedXmlPaths.map((filePath) => silentlyDeleteFile(filePath))); } async function silentlyDeleteFile(filePath) { try { await fs_1.promises.unlink(filePath); } catch (e) { // gracefully skip the error } } async function getXmlFilesFromDirectory(directory) { return await (0, globWithOptions_1.globWithOptions)('**/*.xml', { cwd: directory, ignore: [], // Remove default ignored directories so we can scan within "target" directory }); } function getFullWebResourceKey(pluginKey, webResourceKey) { return `${pluginKey}:${webResourceKey}`; } //# sourceMappingURL=atlassianPluginXml.js.map