60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
const { join } = require('path');
|
|
const { readdir, readJson } = require('fs-extra');
|
|
const marked = require('marked');
|
|
const requestGithub = require('./request');
|
|
const schema = require('./schema');
|
|
|
|
const pagesPath = './src/pages';
|
|
|
|
const getPinnedRepoJSONs = async () => {
|
|
let {
|
|
data: {
|
|
viewer: {
|
|
pinnedRepositories: {
|
|
edges: pinnedRepoData
|
|
}
|
|
}
|
|
}
|
|
} = await requestGithub(schema);
|
|
return pinnedRepoData.map(data => {
|
|
if (data.node.readme && data.node.readme.text) {
|
|
data.node.readme.html = marked(data.node.readme.text);
|
|
}
|
|
return data.node;
|
|
});
|
|
};
|
|
|
|
const getStaticPageJSONs = async () => {
|
|
let fileNames;
|
|
let filesJSON;
|
|
|
|
try {
|
|
fileNames = await readdir(pagesPath);
|
|
} catch (error) {
|
|
console.error(error);
|
|
return;
|
|
}
|
|
|
|
let readFilesPromises = fileNames.map(fileName => {
|
|
let filePath = join(pagesPath, fileName);
|
|
return readJson(filePath);
|
|
});
|
|
|
|
try {
|
|
let allData = await Promise.all(readFilesPromises);
|
|
return allData.map(data => {
|
|
if (data.readme && data.readme.text) {
|
|
data.readme.html = marked(data.readme.text);
|
|
}
|
|
return data;
|
|
});
|
|
} catch (error) {
|
|
console.error('Error while reading JSON', error);
|
|
return;
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
getPinnedRepoJSONs,
|
|
getStaticPageJSONs,
|
|
};
|