mirror of
https://github.com/scratchfoundation/golangci-lint.git
synced 2025-08-01 17:09:18 -04:00
docs: inline website theme (#1096)
Inline @rocketseat theme for Gatsby because we need a lot of changes. Fix bad GitHub edit url, next/prev links, external links without target="_blank".
This commit is contained in:
parent
e560b3f76e
commit
0d774cd24a
43 changed files with 2003 additions and 72 deletions
docs
252
docs/gatsby-node.js
Normal file
252
docs/gatsby-node.js
Normal file
|
@ -0,0 +1,252 @@
|
|||
const path = require(`path`);
|
||||
const { createFilePath } = require(`gatsby-source-filesystem`);
|
||||
const fs = require(`fs`);
|
||||
|
||||
const {
|
||||
normalizeBasePath,
|
||||
resolveLink,
|
||||
} = require(`./src/@rocketseat/gatsby-theme-docs-core/util/url`);
|
||||
const withDefault = require(`./src/@rocketseat/gatsby-theme-docs-core/util/with-default`);
|
||||
|
||||
exports.createPages = ({ graphql, actions: { createPage }, reporter }) => {
|
||||
reporter.success(`onCreateDocs`);
|
||||
|
||||
const siteConfig = require(`./src/config/site.js`);
|
||||
const { basePath, baseDir, docsPath, githubUrl } = withDefault(siteConfig);
|
||||
|
||||
const docsTemplate = require.resolve(
|
||||
`./src/@rocketseat/gatsby-theme-docs/src/templates/docs-query.js`
|
||||
);
|
||||
const homeTemplate = require.resolve(
|
||||
`./src/@rocketseat/gatsby-theme-docs/src/templates/homepage-query.js`
|
||||
);
|
||||
|
||||
return graphql(
|
||||
`
|
||||
{
|
||||
files: allFile(filter: { extension: { in: ["md", "mdx"] } }) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
relativePath
|
||||
childMdx {
|
||||
frontmatter {
|
||||
next
|
||||
}
|
||||
fields {
|
||||
slug
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
sidebar: allSidebarItems {
|
||||
edges {
|
||||
node {
|
||||
label
|
||||
link
|
||||
items {
|
||||
label
|
||||
link
|
||||
}
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
).then((result) => {
|
||||
if (result.errors) {
|
||||
reporter.panic(
|
||||
`docs: there was an error loading the docs folder!`,
|
||||
result.errors
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
createPage({
|
||||
path: basePath,
|
||||
component: homeTemplate,
|
||||
});
|
||||
|
||||
// Generate prev/next items based on sidebar.yml file
|
||||
const sidebar = result.data.sidebar.edges;
|
||||
const listOfItems = [];
|
||||
|
||||
sidebar.forEach(({ node: { label, link, items } }) => {
|
||||
if (Array.isArray(items)) {
|
||||
items.forEach((item) => {
|
||||
listOfItems.push({
|
||||
label: item.label,
|
||||
link: resolveLink(item.link, basePath),
|
||||
});
|
||||
});
|
||||
} else {
|
||||
listOfItems.push({
|
||||
label,
|
||||
link: resolveLink(link, basePath),
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Generate docs pages
|
||||
const docs = result.data.files.edges;
|
||||
docs.forEach((doc) => {
|
||||
const {
|
||||
childMdx: {
|
||||
frontmatter: { next },
|
||||
fields: { slug },
|
||||
},
|
||||
relativePath,
|
||||
} = doc.node;
|
||||
|
||||
const githubEditUrl =
|
||||
githubUrl &&
|
||||
`${githubUrl}/tree/master/${baseDir}/${docsPath}/${relativePath}`;
|
||||
|
||||
const currentPageIndex = listOfItems.findIndex(
|
||||
(page) => page.link === slug
|
||||
);
|
||||
|
||||
const prevItem = listOfItems[currentPageIndex - 1];
|
||||
const nextItem = next
|
||||
? listOfItems.find((item) => item.link === next)
|
||||
: listOfItems[currentPageIndex + 1];
|
||||
|
||||
createPage({
|
||||
path: slug,
|
||||
component: docsTemplate,
|
||||
context: {
|
||||
slug,
|
||||
prev: prevItem,
|
||||
next: nextItem,
|
||||
githubEditUrl,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
reporter.success(`docs pages created`);
|
||||
});
|
||||
};
|
||||
|
||||
exports.createSchemaCustomization = ({ actions }) => {
|
||||
actions.createTypes(`
|
||||
type MdxFrontmatter @dontInfer {
|
||||
title: String!
|
||||
description: String
|
||||
image: String
|
||||
disableTableOfContents: Boolean
|
||||
next: String
|
||||
}
|
||||
`);
|
||||
|
||||
actions.createTypes(`
|
||||
type SidebarItems implements Node {
|
||||
label: String!
|
||||
link: String
|
||||
items: [SidebarItemsItems]
|
||||
}
|
||||
|
||||
type SidebarItemsItems {
|
||||
label: String
|
||||
link: String
|
||||
}
|
||||
`);
|
||||
};
|
||||
|
||||
exports.onPreBootstrap = ({ store, reporter }, themeOptions) => {
|
||||
const { configPath, docsPath } = withDefault(themeOptions);
|
||||
const { program } = store.getState();
|
||||
|
||||
const dirs = [
|
||||
path.join(program.directory, configPath),
|
||||
path.join(program.directory, docsPath),
|
||||
];
|
||||
|
||||
dirs.forEach((dir) => {
|
||||
if (!fs.existsSync(dir)) {
|
||||
reporter.success(`docs: intialized the ${dir} directory`);
|
||||
fs.mkdirSync(dir);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.onCreateNode = (
|
||||
{ node, actions: { createNodeField }, getNode },
|
||||
themeOptions
|
||||
) => {
|
||||
if (node.internal.type !== `Mdx`) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { basePath } = withDefault(themeOptions);
|
||||
|
||||
let value = createFilePath({ node, getNode });
|
||||
if (value === "index") value = "";
|
||||
|
||||
createNodeField({
|
||||
name: `slug`,
|
||||
node,
|
||||
value: normalizeBasePath(basePath, value),
|
||||
});
|
||||
|
||||
createNodeField({
|
||||
name: `id`,
|
||||
node,
|
||||
value: node.id,
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
[
|
||||
{
|
||||
"node": {
|
||||
"label": "Home",
|
||||
"link": "/",
|
||||
"items": null,
|
||||
"id": "a2913be3-af3c-5fc9-967e-a058e86b20a9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"node": {
|
||||
"label": "With dropdown",
|
||||
"link": null,
|
||||
"items": [
|
||||
{ "label": "My Example", "link": "/my-example" },
|
||||
{ "label": "Teste 2", "link": "/teste-2" }
|
||||
],
|
||||
"id": "c7d9606c-4bda-5097-a0df-53108e9f4efd"
|
||||
}
|
||||
}
|
||||
]
|
||||
*/
|
||||
|
||||
// Ler todo o array e salvar em uma objeto chave/valor
|
||||
/**
|
||||
* {
|
||||
* '/': {
|
||||
* prev: null,
|
||||
* next: {
|
||||
* label: 'My example',
|
||||
* link: '/my-example'
|
||||
* }
|
||||
* },
|
||||
* '/my-example': {
|
||||
* prev: {
|
||||
* label: 'Home',
|
||||
* link: '/'
|
||||
* },
|
||||
* next: {
|
||||
* label: 'Teste 2',
|
||||
* link: '/teste-2'
|
||||
* }
|
||||
* },
|
||||
* '/teste-2': {
|
||||
* prev: {
|
||||
* label: 'My example',
|
||||
* link: '/my-example'
|
||||
* },
|
||||
* next: null
|
||||
* }
|
||||
* }
|
||||
*/
|
Loading…
Add table
Add a link
Reference in a new issue