From 4d38323ae1d42a9d6b0d6b6a7db2d809b69ab4c2 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 7 Feb 2024 15:40:08 -0500 Subject: [PATCH] Remove external Plugins from left navbar --- .github/workflows/check-plugin-docs.js | 105 ------------------ .github/workflows/check-plugin-docs.yml | 34 ------ .../content/docs/plugins/install-plugins.mdx | 2 +- website/data/docs-nav-data.json | 4 - 4 files changed, 1 insertion(+), 144 deletions(-) delete mode 100644 .github/workflows/check-plugin-docs.js delete mode 100644 .github/workflows/check-plugin-docs.yml diff --git a/.github/workflows/check-plugin-docs.js b/.github/workflows/check-plugin-docs.js deleted file mode 100644 index cb61a1870..000000000 --- a/.github/workflows/check-plugin-docs.js +++ /dev/null @@ -1,105 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const { resolvePluginDocs } = require("@hashicorp/platform-packer-plugins"); - -const COLOR_RESET = "\x1b[0m"; -const COLOR_GREEN = "\x1b[32m"; -const COLOR_BLUE = "\x1b[34m"; -const COLOR_RED = "\x1b[31m"; - -const VALID_PLUGIN_TIERS = ["official", "community", "verified"]; - - -async function checkPluginDocs() { - const failureMessages = []; - const pluginsPath = "website/data/plugins-manifest.json"; - const pluginsFile = fs.readFileSync(path.join(process.cwd(), pluginsPath)); - const pluginEntries = JSON.parse(pluginsFile); - const pluginEntriesWithDocs = await resolvePluginDocs(pluginEntries); - const entriesCount = pluginEntries.length; - console.log(`\nResolving plugin docs from ${entriesCount} repositories …`); - for (var i = 0; i < entriesCount; i++) { - const pluginEntry = pluginEntriesWithDocs[i]; - const { title, repo, version } = pluginEntry; - console.log(`\n${COLOR_BLUE}${repo}${COLOR_RESET} | ${title}`); - console.log(`Fetching docs from release "${version}" …`); - try { - // Validate that all required properties are present - 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".` - ); - } - // Validate pluginTier property - const { pluginTier } = pluginEntry; - if (typeof pluginTier !== "undefined") { - const isValid = VALID_PLUGIN_TIERS.indexOf(pluginTier) !== -1; - if (!isValid) { - throw new Error( - `Failed to validate plugin docs config. Invalid pluginTier "${pluginTier}" found for "${ - title || pluginEntry.path || repo - }". In "website/data/docs-remote-plugins.json", the optional pluginTier property must be one of ${JSON.stringify( - VALID_PLUGIN_TIERS - )}. The pluginTier property can also be omitted, in which case it will be determined from the plugin repository owner.` - ); - } - } - // Validate that local zip files are not used in production - if (typeof pluginEntry.zipFile !== "undefined") { - throw new Error( - `Local ZIP file being used for "${ - title || pluginEntry.path || repo - }". The zipFile option should only be used for local development. Please omit the zipFile attribute and ensure the plugin entry points to a remote repository.` - ); - } - // Attempt to fetch plugin docs files - const docsMdxFiles = pluginEntry.files - 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(); diff --git a/.github/workflows/check-plugin-docs.yml b/.github/workflows/check-plugin-docs.yml deleted file mode 100644 index 00ba2851e..000000000 --- a/.github/workflows/check-plugin-docs.yml +++ /dev/null @@ -1,34 +0,0 @@ -# -# 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 * * *" - -permissions: - contents: read - -jobs: - check-plugin-docs: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Node - uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0 - with: - node-version: '16.x' - - name: Install Dependencies - run: npm i @hashicorp/platform-packer-plugins - - name: Fetch and validate plugin docs - run: node .github/workflows/check-plugin-docs.js diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 4302db847..2413d025f 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -11,7 +11,7 @@ Packer plugins are separate, standalone applications that perform tasks during e You do not need to install the components that ship with the Packer binary. Packer automatically knows how to find and launch these built-in plugins. -This page explains how to install custom external plugins. Refer to [External Plugins](/packer/plugins) for a list of available plugins and their documentation. +This page explains how to install custom external plugins. Refer to [External Plugins](/packer/integrations) for a list of available plugins and their documentation. Depending on the template type you're using (HCL2 or legacy JSON), the methods for installing plugins may differ. diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 807fb16f9..e5423f814 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -856,10 +856,6 @@ "title": "Installing Plugins", "path": "plugins/install-plugins" }, - { - "title": "External Plugins", - "href": "/plugins" - }, { "title": "Developing Plugins", "routes": [