diff --git a/gatsby-node.js b/gatsby-node.js index b33000d..31093c5 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -62,6 +62,14 @@ exports.onCreateNode = async ({ node, getNode, actions }) => { const { frontmatter } = node const isDoc = Boolean(!frontmatter.path) + const githubLink = helper.findMarkdownLink(node.fileAbsolutePath) + + createNodeField({ + node, + name: "githubLink", + value: githubLink, + }) + if (!isDoc) { return } diff --git a/scripts/buildHelpers.js b/scripts/buildHelpers.js index 6f86bfd..411709d 100644 --- a/scripts/buildHelpers.js +++ b/scripts/buildHelpers.js @@ -1,5 +1,17 @@ const DEFAULT_AVATAR_MODULO = 5 module.exports = { + findMarkdownLink(absolutePath) { + // We're assuming this path isn't going to change + const start = absolutePath.lastIndexOf("src/content") + + if (!start) { + throw Error(`Markdown file ${absolutePath} is outside of src/content`) + } + + const route = absolutePath.slice(start) + // Same as this + return `https://github.com/the-programmers-hangout/website/tree/master/${route}` + }, splitHash(identifier) { const hashLocation = identifier.lastIndexOf("#")