forked from hashicorp/packer
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request hashicorp#10764 from zchsh/zs.remote-plugin-zip-ap…
…proach website: Implement RFC MKTG-033
- Loading branch information
Showing
20 changed files
with
974 additions
and
645 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
const fs = require("fs"); | ||
const path = require("path"); | ||
const fetchPluginDocs = require("../../website/components/remote-plugin-docs/utils/fetch-plugin-docs"); | ||
|
||
const COLOR_RESET = "\x1b[0m"; | ||
const COLOR_GREEN = "\x1b[32m"; | ||
const COLOR_BLUE = "\x1b[34m"; | ||
const COLOR_RED = "\x1b[31m"; | ||
|
||
async function checkPluginDocs() { | ||
const failureMessages = []; | ||
const pluginsPath = "website/data/docs-remote-plugins.json"; | ||
const pluginsFile = fs.readFileSync(path.join(process.cwd(), pluginsPath)); | ||
const pluginEntries = JSON.parse(pluginsFile); | ||
const entriesCount = pluginEntries.length; | ||
console.log(`\nResolving plugin docs from ${entriesCount} repositories …`); | ||
for (var i = 0; i < entriesCount; i++) { | ||
const pluginEntry = pluginEntries[i]; | ||
const { title, repo, version } = pluginEntry; | ||
console.log(`\n${COLOR_BLUE}${repo}${COLOR_RESET} | ${title}`); | ||
console.log(`Fetching docs from release "${version}" …`); | ||
try { | ||
const undefinedProps = ["title", "repo", "version", "path"].filter( | ||
(key) => typeof pluginEntry[key] == "undefined" | ||
); | ||
if (undefinedProps.length > 0) { | ||
throw new Error( | ||
`Failed to validate plugin docs config. Undefined configuration properties ${JSON.stringify( | ||
undefinedProps | ||
)} found for "${ | ||
title || pluginEntry.path || repo | ||
}". In "website/data/docs-remote-plugins.json", please ensure the missing properties ${JSON.stringify( | ||
undefinedProps | ||
)} are defined. Additional information on this configuration can be found in "website/README.md".` | ||
); | ||
} | ||
const docsMdxFiles = await fetchPluginDocs({ repo, tag: version }); | ||
const mdxFilesByComponent = docsMdxFiles.reduce((acc, mdxFile) => { | ||
const componentType = mdxFile.filePath.split("/")[1]; | ||
if (!acc[componentType]) acc[componentType] = []; | ||
acc[componentType].push(mdxFile); | ||
return acc; | ||
}, {}); | ||
console.log(`${COLOR_GREEN}Found valid docs:${COLOR_RESET}`); | ||
Object.keys(mdxFilesByComponent).forEach((component) => { | ||
const componentFiles = mdxFilesByComponent[component]; | ||
console.log(` ${component}`); | ||
componentFiles.forEach(({ filePath }) => { | ||
const pathFromComponent = filePath.split("/").slice(2).join("/"); | ||
console.log(` ├── ${pathFromComponent}`); | ||
}); | ||
}); | ||
} catch (err) { | ||
console.log(`${COLOR_RED}${err}${COLOR_RESET}`); | ||
failureMessages.push(`\n${COLOR_RED}× ${repo}: ${COLOR_RESET}${err}`); | ||
} | ||
} | ||
|
||
if (failureMessages.length === 0) { | ||
console.log( | ||
`\n---\n\n${COLOR_GREEN}Summary: Successfully resolved all plugin docs.` | ||
); | ||
pluginEntries.forEach((e) => | ||
console.log(`${COLOR_GREEN}✓ ${e.repo}${COLOR_RESET}`) | ||
); | ||
console.log(""); | ||
} else { | ||
console.log( | ||
`\n---\n\n${COLOR_RED}Summary: Failed to fetch docs for ${failureMessages.length} plugin(s):` | ||
); | ||
failureMessages.forEach((err) => console.log(err)); | ||
console.log(""); | ||
process.exit(1); | ||
} | ||
} | ||
|
||
checkPluginDocs(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# | ||
# This GitHub action checks plugin repositories for valid docs. | ||
# | ||
# This provides a quick assessment on PRs of whether | ||
# there might be issues with docs in plugin repositories. | ||
# | ||
# This is intended to help debug Vercel build issues, which | ||
# may or may not be related to docs in plugin repositories. | ||
|
||
name: "website: Check plugin docs" | ||
on: | ||
pull_request: | ||
paths: | ||
- "website/**" | ||
schedule: | ||
- cron: "45 0 * * *" | ||
|
||
jobs: | ||
check-plugin-docs: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
- name: Setup Node | ||
uses: actions/setup-node@v1 | ||
- name: Install Dependencies | ||
run: npm i isomorphic-unfetch adm-zip gray-matter | ||
- name: Fetch and validate plugin docs | ||
run: node .github/workflows/check-plugin-docs.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.