blob: a5ba8250eea4205f82886ca059e1672fb4090b28 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const https = require("https");
const fs = require("fs");
const { parseString } = require("xml2js");
const POM_URL = "https://raw.githubusercontent.com/apache/atlas/master/pom.xml";
const OUTPUT_PATH = "src/resources/data/team.json";
function fetchXML(url) {
return new Promise((resolve, reject) => {
https
.get(url, res => {
if (res.statusCode !== 200) {
reject(new Error(`Request failed. Status code: ${res.statusCode}`));
res.resume(); // drain
return;
}
let data = "";
res.setEncoding("utf8");
res.on("data", chunk => (data += chunk));
res.on("end", () => resolve(data));
})
.on("error", reject);
});
}
(async () => {
try {
const xmlData = await fetchXML(POM_URL);
parseString(xmlData, (err, result) => {
if (err) {
console.error("❌ XML parsing failed:", err);
process.exit(1);
}
let developersList = [];
if (
result &&
result.project &&
result.project.developers &&
Array.isArray(result.project.developers) &&
result.project.developers[0] &&
result.project.developers[0].developer
) {
developersList = result.project.developers[0].developer;
}
const keys = developersList.length > 0 ? Object.keys(developersList[0]) : [];
const output = developersList.map(dev => {
const obj = {};
keys.forEach(k => {
obj[k] = dev[k] || [""];
});
return obj;
});
// Ensure the directory exists
const outputDir = require("path").dirname(OUTPUT_PATH);
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
fs.writeFileSync(OUTPUT_PATH, JSON.stringify(output, null, 2));
console.log(`✅ Team data written to ${OUTPUT_PATH}`);
});
} catch (err) {
console.error("❌ Failed to fetch pom.xml:", err.message);
process.exit(1);
}
})();