This is an automated email from the ASF dual-hosted git repository.
pinal pushed a commit to branch atlas-2.5
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/atlas-2.5 by this push:
new 45eefaa5c ATLAS-5039: Page for TeamList doesn't render Atlas team
members in atlas.apache.org (#394)
45eefaa5c is described below
commit 45eefaa5ce3ef3b0becb45c7ea75c5b6add762b8
Author: Pinal Shah <[email protected]>
AuthorDate: Tue Jul 15 12:14:57 2025 +0530
ATLAS-5039: Page for TeamList doesn't render Atlas team members in
atlas.apache.org (#394)
* ATLAS-5039: Page for TeamList doesn't render Atlas team members in
atlas.apache.org
* ATLAS-5039: update path
(cherry picked from commit 6fe5db51d9b97960f89b12e48e03f14395d75aea)
---
docs/package.json | 2 +
docs/scripts/fetchTeamList.js | 90 ++++++++++++++++++++++++++
docs/theme/components/shared/TeamList/index.js | 29 +--------
3 files changed, 95 insertions(+), 26 deletions(-)
diff --git a/docs/package.json b/docs/package.json
index 340a17253..8a34ba566 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -5,6 +5,8 @@
"main": "index.js",
"scripts": {
"start": "node ./docz-lib/docz/bin/index.js dev",
+ "fetch-team": "node scripts/fetchTeamList.js",
+ "prebuild": "npm run fetch-team",
"build": "node ./docz-lib/docz/bin/index.js build",
"predeploy": "npm install && npm run build",
"deploy": "gh-pages -d .docz/dist"
diff --git a/docs/scripts/fetchTeamList.js b/docs/scripts/fetchTeamList.js
new file mode 100644
index 000000000..a5ba8250e
--- /dev/null
+++ b/docs/scripts/fetchTeamList.js
@@ -0,0 +1,90 @@
+/**
+ * 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);
+ }
+})();
\ No newline at end of file
diff --git a/docs/theme/components/shared/TeamList/index.js
b/docs/theme/components/shared/TeamList/index.js
index 77c4fe729..a28225c49 100644
--- a/docs/theme/components/shared/TeamList/index.js
+++ b/docs/theme/components/shared/TeamList/index.js
@@ -20,6 +20,7 @@ import React, { Component } from "react";
import axios from "axios";
import { parseString } from "xml2js";
import styled from "styled-components";
+import teamData from "src/resources/data/team.json";
const TeamListStyle = styled.div`
width: 100%;
@@ -73,33 +74,9 @@ export default class TeamList extends Component {
constructor(props) {
super(props);
this.state = {
- isLoading: true,
- displayData: []
+ displayData: teamData || [],
+ isLoading: false
};
- this.fetchData();
- }
-
- fetchData() {
- axios
- .get(`https://raw.githubusercontent.com/apache/atlas/master/pom.xml`)
- .then(res => {
- // Transform the raw data by extracting the nested posts
- parseString(res.data, (err, result) => {
- const developersList = result.project.developers[0].developer;
- const developersListLength = developersList.length;
- let t_displayData = [];
- const keys = Object.keys(developersList[0]);
- for (var i = 0; i < developersListLength; i++) {
- const obj = {};
- keys.map(k => (obj[k] = developersList[i][k]));
- t_displayData.push(obj);
- }
- this.setState({ displayData: t_displayData, isLoading: false });
- });
- })
- .catch(err => {
- console.log("fetching data from pom.xml is failed.");
- });
}
render() {