56 lines
1.1 KiB
JavaScript
56 lines
1.1 KiB
JavaScript
const path = require('path');
|
|
|
|
const exampleTemplate = path.resolve('./src/templates/example-page.js');
|
|
|
|
const examplePagesQuery = `{
|
|
allExamplesJson {
|
|
edges {
|
|
node {
|
|
slug
|
|
title
|
|
source
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
const createExamplePage = (createPage, examplePages) => {
|
|
examplePages.forEach((page) => {
|
|
const { slug, title, source } = page.node;
|
|
|
|
createPage({
|
|
path: slug,
|
|
component: exampleTemplate,
|
|
context: {
|
|
slug: slug,
|
|
title: title,
|
|
source: source,
|
|
sourceSlug: `/example-flows/${source}/`,
|
|
},
|
|
});
|
|
});
|
|
};
|
|
|
|
const exampleGenerator = (createPage, graphql) =>
|
|
new Promise((resolve, reject) => {
|
|
resolve(
|
|
graphql(examplePagesQuery).then((result) => {
|
|
if (result.errors) {
|
|
console.log(result.errors);
|
|
reject(result.errors);
|
|
}
|
|
|
|
const pages = result.data.allExamplesJson.edges;
|
|
|
|
try {
|
|
createExamplePage(createPage, pages);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
})
|
|
);
|
|
});
|
|
|
|
module.exports = exampleGenerator;
|