/* * SonarQube * Copyright (C) 2009-2021 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ const path = require('path'); const fs = require('fs-extra'); const { createFilePath } = require('gatsby-source-filesystem'); exports.onCreateNode = ({ node, getNode, actions }) => { const { createNodeField } = actions; if (node.internal.type === 'MarkdownRemark') { const slug = createFilePath({ node, getNode, basePath: 'pages' }); createNodeField({ node, name: 'slug', value: slug }); } }; exports.createPages = ({ graphql, actions }) => { const { createPage } = actions; return new Promise((resolve, reject) => { graphql(` { allMarkdownRemark { edges { node { frontmatter { url } headings { depth value } fields { slug } } } } } `).then(result => { result.data.allMarkdownRemark.edges.forEach(({ node }) => { createPage({ path: node.frontmatter.url || node.fields.slug, component: path.resolve('./src/templates/page.tsx'), context: { // Data passed to context is available in page queries as GraphQL variables. slug: node.fields.slug } }); }); resolve(); }); }); }; exports.onPostBootstrap = () => { const from = path.resolve(__dirname, 'src/images'); const to = path.resolve(__dirname, 'public/images'); return fs.copy(from, to); };