mirror of
https://github.com/oceanprotocol/docs.git
synced 2024-06-26 11:16:27 +02:00
166 lines
5.5 KiB
JavaScript
Executable File
166 lines
5.5 KiB
JavaScript
Executable File
const path = require('path')
|
|
const { createFilePath } = require('gatsby-source-filesystem')
|
|
|
|
exports.onCreateNode = ({ node, getNode, actions }) => {
|
|
const { createNodeField } = actions
|
|
|
|
if (node.internal.type === 'MarkdownRemark') {
|
|
const fileNode = getNode(node.parent)
|
|
const parsedFilePath = path.parse(fileNode.relativePath)
|
|
const slug = createFilePath({ node, getNode, basePath: 'content' })
|
|
const section = parsedFilePath.dir
|
|
|
|
createNodeField({
|
|
node,
|
|
name: 'slug',
|
|
value: slug
|
|
})
|
|
|
|
createNodeField({
|
|
node,
|
|
name: 'section',
|
|
value: section
|
|
})
|
|
}
|
|
|
|
// // console.log(node)
|
|
|
|
// // if (node.internal.owner === 'gatsby-source-graphql') {
|
|
// // console.log(node)
|
|
// // }
|
|
}
|
|
|
|
// exports.sourceNodes = (
|
|
// { actions, createNodeId, createContentDigest },
|
|
// configOptions
|
|
// ) => {
|
|
// const { createNode } = actions
|
|
|
|
// // Gatsby adds a configOption that's not needed for this plugin, delete it
|
|
// delete configOptions.plugins
|
|
|
|
// createNode({
|
|
// // Data for the node.
|
|
// field1: `a string`,
|
|
// field2: 10,
|
|
// field3: true,
|
|
// ...arbitraryOtherData,
|
|
|
|
// // Required fields.
|
|
// id: `a-node-id`,
|
|
// parent: `the-id-of-the-parent-node`, // or null if it's a source node without a parent
|
|
// children: [],
|
|
// internal: {
|
|
// type: `CoolServiceMarkdownField`,
|
|
// contentDigest: crypto
|
|
// .createHash(`md5`)
|
|
// .update(JSON.stringify(fieldData))
|
|
// .digest(`hex`),
|
|
// mediaType: `text/markdown`, // optional
|
|
// content: JSON.stringify(fieldData), // optional
|
|
// description: `Cool Service: "Title of entry"` // optional
|
|
// }
|
|
// })
|
|
// }
|
|
|
|
exports.createPages = ({ graphql, actions }) => {
|
|
const { createPage } = actions
|
|
|
|
return new Promise((resolve, reject) => {
|
|
resolve(
|
|
graphql(
|
|
`
|
|
{
|
|
allMarkdownRemark(
|
|
filter: { fileAbsolutePath: { regex: "/content/" } }
|
|
) {
|
|
edges {
|
|
node {
|
|
fields {
|
|
slug
|
|
section
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
github {
|
|
repository(
|
|
owner: "oceanprotocol"
|
|
name: "dev-ocean"
|
|
) {
|
|
root: object(
|
|
expression: "master:doc/architecture.md"
|
|
) {
|
|
... on GitHub_Blob {
|
|
text
|
|
}
|
|
}
|
|
squid: object(
|
|
expression: "master:doc/architecture/squid.md"
|
|
) {
|
|
... on GitHub_Blob {
|
|
text
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`
|
|
).then(result => {
|
|
if (result.errors) {
|
|
/* eslint-disable-next-line no-console */
|
|
console.log(result.errors)
|
|
reject(result.errors)
|
|
}
|
|
|
|
const docTemplate = path.resolve('./src/templates/Doc.jsx')
|
|
const posts = result.data.allMarkdownRemark.edges
|
|
|
|
// Create Doc pages
|
|
posts.forEach(post => {
|
|
createPage({
|
|
path: `${post.node.fields.slug}`,
|
|
component: docTemplate,
|
|
context: {
|
|
slug: post.node.fields.slug,
|
|
section: post.node.fields.section
|
|
}
|
|
})
|
|
})
|
|
|
|
// Create Architecture section from dev-ocean contents
|
|
const docRepoTemplate = path.resolve(
|
|
'./src/templates/DocRepo.jsx'
|
|
)
|
|
|
|
createPage({
|
|
path: '/concepts/architecture/',
|
|
component: docRepoTemplate,
|
|
context: {
|
|
slug: '/concepts/architecture/',
|
|
section: 'concepts',
|
|
title: 'Architecture',
|
|
description: 'Hello description',
|
|
content: `${result.data.github.repository.root.text}`
|
|
}
|
|
})
|
|
|
|
createPage({
|
|
path: '/concepts/squid/',
|
|
component: docRepoTemplate,
|
|
context: {
|
|
slug: '/concepts/squid/',
|
|
section: 'concepts',
|
|
title: 'Squid',
|
|
description: 'Hello description',
|
|
content: `${result.data.github.repository.squid.text}`
|
|
}
|
|
})
|
|
|
|
resolve()
|
|
})
|
|
)
|
|
})
|
|
}
|