diff --git a/README.md b/README.md
index bec48a3..f52b4de 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,8 @@
This app uses the Github issue search API to provide
a convenient issue browser across all of our
-[supported modules](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/).
+[supported modules](https://docs.silverstripe.org/en/project_governance/supported_modules/)
+as well as other repositories that are important for maintenance.
It uses [vue-cli](https://github.com/vuejs/vue-cli/blob/dev/docs/cli.md)
to simplify local development and production builds for VueJS.
@@ -15,6 +16,7 @@ You can use it on https://github-issue-search-client-silverstripe.vercel.app.
This project is powered by [Vercel](https://vercel.com/?utm_source=silverstripe&utm_campaign=oss).
![Vercel logo](_img/vercel-logotype-dark.png)
+
## Install
Use Node v8 or higher.
@@ -39,10 +41,10 @@ Note that the token should NOT have any other permissions/scopes, since it will
in the client bundle (and is readable by everyone through network requests).
The only reason to include it here is avoiding to hit Github's rate limits without it.
-In order to get an updated list of our [supported modules](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/),
+In order to get an updated list of the repositories we care about,
you can run the following command. This will be written to the `repos.json` file in the `src` folder, which can be
-updated (in VCS) periodically if required. This will also happen during a deployment and auto-update in the
-Now environment.
+updated (in VCS) periodically if required.
+This gets run during a deployment and auto-update in the Vercel environment.
```bash
npm run get-repos
diff --git a/src/components/ApolloResults.vue b/src/components/ApolloResults.vue
index c30e193..ef03e44 100644
--- a/src/components/ApolloResults.vue
+++ b/src/components/ApolloResults.vue
@@ -87,6 +87,9 @@ export default defineComponent({
if (this.formData.includeSupported) {
ids.push('supported');
}
+ if (this.formData.includeOther) {
+ ids.push('other');
+ }
let repos = this.formData.customRepos.length ?
// Pass in custom list of repos through the URL.
diff --git a/src/components/RestResults.vue b/src/components/RestResults.vue
index 0036828..c126a8a 100644
--- a/src/components/RestResults.vue
+++ b/src/components/RestResults.vue
@@ -86,6 +86,9 @@ export default defineComponent({
if (this.formData.includeSupported) {
ids.push('supported');
}
+ if (this.formData.includeOther) {
+ ids.push('other');
+ }
const repos = this.formData.customRepos.length ?
// Pass in custom list of repos through the URL.
@@ -112,6 +115,9 @@ export default defineComponent({
if (this.formData.includeSupported) {
ids.push('supported');
}
+ if (this.formData.includeOther) {
+ ids.push('other');
+ }
const repos = this.formData.customRepos.length ?
// Pass in custom list of repos through the URL.
diff --git a/src/components/SearchForm.vue b/src/components/SearchForm.vue
index 618b7d5..6925032 100644
--- a/src/components/SearchForm.vue
+++ b/src/components/SearchForm.vue
@@ -13,10 +13,16 @@
Filtering by {{data.customRepos.length}} repos
-
+
- Include supported modules
+ Include supported modules
+
+
+
+
+
+ Include maintenance repos
diff --git a/src/components/SearchResults.vue b/src/components/SearchResults.vue
index 0d40253..2615b18 100644
--- a/src/components/SearchResults.vue
+++ b/src/components/SearchResults.vue
@@ -25,6 +25,7 @@ export default defineComponent({
mode: '',
customRepos: [],
includeSupported: true,
+ includeOther: true,
communityOnly: false,
issueStatus: 'open',
issueType: 'issue',
@@ -40,6 +41,7 @@ export default defineComponent({
mode: searchParams.get('mode') || defaults.mode,
customRepos: searchParams.get('customRepos') ? searchParams.get('customRepos').split(',') : defaults.customRepos,
includeSupported: searchParams.get('includeSupported') !== '0',
+ includeOther: searchParams.get('includeOther') !== '0',
communityOnly: Boolean(searchParams.get('communityOnly')),
issueStatus: searchParams.get('issueStatus') || defaults.issueStatus,
issueType: searchParams.get('issueType') || defaults.issueType,
@@ -67,6 +69,7 @@ export default defineComponent({
mode: formData.mode || '',
customRepos: formData.customRepos ? formData.customRepos : [],
includeSupported: formData.includeSupported,
+ includeOther: formData.includeOther,
communityOnly: formData.communityOnly,
issueStatus: formData.issueStatus || 'open',
issueType: formData.issueType,
diff --git a/src/repos.json b/src/repos.json
index 9702fdc..0a4bf64 100644
--- a/src/repos.json
+++ b/src/repos.json
@@ -23,42 +23,34 @@
"silverstripe/vendor-plugin",
"silverstripe/silverstripe-versioned",
"silverstripe/silverstripe-versioned-admin",
- "silverstripe-themes/silverstripe-simple"
+ "silverstripe/silverstripe-simple"
]
},
{
"id": "supported",
"name": "Supported",
"repos": [
- "silverstripe/gha-action-ci",
- "silverstripe/gha-auto-tag",
- "silverstripe/gha-ci",
- "silverstripe/gha-dispatch-ci",
- "silverstripe/gha-gauge-release",
- "silverstripe/gha-generate-matrix",
- "silverstripe/gha-issue",
- "silverstripe/gha-keepalive",
- "silverstripe/gha-merge-up",
- "silverstripe/gha-pull-request",
- "silverstripe/gha-run-tests",
- "silverstripe/gha-tag-release",
- "silverstripe/gha-trigger-ci",
- "silverstripe/gha-update-js",
- "silverstripe/cow",
- "silverstripe/rhino",
- "silverstripe/github-issue-search-client",
- "silverstripe/module-standardiser",
- "silverstripe/silverstripe-tx-translator",
- "silverstripe/markdown-php-codesniffer",
- "silverstripe/.github",
- "silverstripe/eslint-config",
- "silverstripe/webpack-config",
- "silverstripe/silverstripe-module",
- "silverstripe/api.silverstripe.org",
- "silverstripe/doc.silverstripe.org",
- "silverstripe/silverstripe-userhelp-content",
- "silverstripe/demo.silverstripe.org",
- "silverstripe/silverstripe-frameworktest",
+ "silverstripe/developer-docs",
+ "silverstripe/silverstripe-admin",
+ "silverstripe/silverstripe-asset-admin",
+ "silverstripe/silverstripe-assets",
+ "silverstripe/silverstripe-campaign-admin",
+ "silverstripe/silverstripe-cms",
+ "silverstripe/silverstripe-config",
+ "silverstripe/silverstripe-errorpage",
+ "silverstripe/silverstripe-framework",
+ "silverstripe/silverstripe-graphql",
+ "silverstripe/silverstripe-installer",
+ "silverstripe/silverstripe-session-manager",
+ "silverstripe/recipe-cms",
+ "silverstripe/recipe-core",
+ "silverstripe/recipe-plugin",
+ "silverstripe/silverstripe-reports",
+ "silverstripe/silverstripe-siteconfig",
+ "silverstripe/vendor-plugin",
+ "silverstripe/silverstripe-versioned",
+ "silverstripe/silverstripe-versioned-admin",
+ "silverstripe/silverstripe-simple",
"bringyourownideas/silverstripe-maintenance",
"bringyourownideas/silverstripe-composer-update-checker",
"bringyourownideas/silverstripe-composer-security-checker",
@@ -70,25 +62,17 @@
"silverstripe/cwp-search",
"silverstripe/cwp-starter-theme",
"silverstripe/cwp-watea-theme",
- "silverstripe/developer-docs",
"silverstripe/silverstripe-elemental",
"dnadesign/silverstripe-elemental-subsites",
"dnadesign/silverstripe-elemental-userforms",
"hafriedlander/silverstripe-phockito",
"lekoala/silverstripe-debugbar",
- "silverstripe/silverstripe-admin",
"silverstripe/silverstripe-akismet",
- "silverstripe/silverstripe-asset-admin",
- "silverstripe/silverstripe-assets",
"silverstripe/silverstripe-auditor",
- "silverstripe/silverstripe-behat-extension",
"silverstripe/silverstripe-blog",
- "silverstripe/silverstripe-campaign-admin",
"silverstripe/silverstripe-ckan-registry",
- "silverstripe/silverstripe-cms",
"silverstripe/comment-notifications",
"silverstripe/silverstripe-comments",
- "silverstripe/silverstripe-config",
"silverstripe/silverstripe-content-widget",
"silverstripe/silverstripe-contentreview",
"silverstripe/silverstripe-crontask",
@@ -96,58 +80,47 @@
"silverstripe/silverstripe-elemental-bannerblock",
"silverstripe/silverstripe-elemental-fileblock",
"silverstripe/silverstripe-environmentcheck",
- "silverstripe/silverstripe-errorpage",
"silverstripe/silverstripe-externallinks",
- "silverstripe/silverstripe-framework",
"silverstripe/silverstripe-fulltextsearch",
- "silverstripe/silverstripe-graphql",
"silverstripe/silverstripe-graphql-devtools",
"silverstripe/silverstripe-gridfieldqueuedexport",
"silverstripe/silverstripe-html5",
"silverstripe/silverstripe-hybridsessions",
"silverstripe/silverstripe-iframe",
- "silverstripe/silverstripe-installer",
"silverstripe/silverstripe-ldap",
+ "silverstripe/silverstripe-linkfield",
"silverstripe/silverstripe-lumberjack",
"silverstripe/silverstripe-mimevalidator",
"silverstripe/silverstripe-postgresql",
"silverstripe/silverstripe-realme",
- "silverstripe/silverstripe-session-manager",
"silverstripe/recipe-authoring-tools",
"silverstripe/recipe-blog",
"silverstripe/recipe-ccl",
- "silverstripe/recipe-cms",
"silverstripe/recipe-collaboration",
"silverstripe/recipe-content-blocks",
- "silverstripe/recipe-core",
"silverstripe/recipe-form-building",
- "silverstripe/recipe-plugin",
"silverstripe/recipe-reporting-tools",
"silverstripe/recipe-services",
"silverstripe/recipe-solr-search",
+ "silverstripe/recipe-kitchen-sink",
"silverstripe/silverstripe-registry",
- "silverstripe/silverstripe-reports",
"silverstripe/silverstripe-restfulserver",
"silverstripe/silverstripe-securityreport",
"silverstripe/silverstripe-segment-field",
"silverstripe/silverstripe-sharedraftcontent",
- "silverstripe/silverstripe-siteconfig",
"silverstripe/silverstripe-sitewidecontent-report",
"silverstripe/silverstripe-spamprotection",
"silverstripe/silverstripe-spellcheck",
"silverstripe/silverstripe-sqlite3",
+ "silverstripe/sspak",
"silverstripe/silverstripe-staticpublishqueue",
"silverstripe/silverstripe-subsites",
"silverstripe/silverstripe-tagfield",
"silverstripe/silverstripe-taxonomy",
"silverstripe/silverstripe-textextraction",
"silverstripe/silverstripe-userforms",
- "silverstripe/vendor-plugin",
- "silverstripe/silverstripe-versioned",
- "silverstripe/silverstripe-versioned-admin",
"silverstripe/silverstripe-versionfeed",
"silverstripe/silverstripe-widgets",
- "silverstripe-themes/silverstripe-simple",
"symbiote/silverstripe-advancedworkflow",
"symbiote/silverstripe-gridfieldextensions",
"symbiote/silverstripe-multivaluefield",
@@ -161,5 +134,46 @@
"silverstripe/silverstripe-security-extensions",
"silverstripe/silverstripe-dynamodb"
]
+ },
+ {
+ "id": "other",
+ "name": "Other",
+ "repos": [
+ "silverstripe/gha-action-ci",
+ "silverstripe/gha-auto-tag",
+ "silverstripe/gha-ci",
+ "silverstripe/gha-dispatch-ci",
+ "silverstripe/gha-gauge-release",
+ "silverstripe/gha-generate-matrix",
+ "silverstripe/gha-issue",
+ "silverstripe/gha-keepalive",
+ "silverstripe/gha-merge-up",
+ "silverstripe/gha-pull-request",
+ "silverstripe/gha-run-tests",
+ "silverstripe/gha-tag-release",
+ "silverstripe/gha-trigger-ci",
+ "silverstripe/gha-update-js",
+ "silverstripe/recipe-testing",
+ "silverstripe/silverstripe-behat-extension",
+ "silverstripe/MinkFacebookWebDriver",
+ "silverstripe/cow",
+ "silverstripe/rhino",
+ "silverstripe/github-issue-search-client",
+ "silverstripe/module-standardiser",
+ "silverstripe/silverstripe-tx-translator",
+ "silverstripe/markdown-php-codesniffer",
+ "silverstripe/silverstripe-standards",
+ "silverstripe/documentation-lint",
+ "silverstripe/supported-modules",
+ "silverstripe/eslint-config",
+ "silverstripe/webpack-config",
+ "silverstripe/.github",
+ "silverstripe/api.silverstripe.org",
+ "silverstripe/doc.silverstripe.org",
+ "silverstripe/silverstripe-userhelp-content",
+ "silverstripe/demo.silverstripe.org",
+ "silverstripe/silverstripe-frameworktest",
+ "silverstripe/silverstripe-module"
+ ]
}
]
\ No newline at end of file
diff --git a/src/types.d.ts b/src/types.d.ts
index 4a4857b..2569575 100644
--- a/src/types.d.ts
+++ b/src/types.d.ts
@@ -14,6 +14,7 @@ export type FormData = {
mode: Mode,
customRepos: string[],
includeSupported: boolean,
+ includeOther: boolean,
communityOnly: boolean,
issueStatus: IssueStatus,
issueType: IssueType,
diff --git a/util/get-supported-module-env.js b/util/get-supported-module-env.js
index 468bf30..0060f8a 100644
--- a/util/get-supported-module-env.js
+++ b/util/get-supported-module-env.js
@@ -4,85 +4,46 @@ const path = require('path');
// See https://stackoverflow.com/a/75281896/10936596
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));
-/**
- * Gets information for any "supported-module" repositories.
- */
-async function getRelevantModules(jsonUrl, foundModules) {
- const response = await fetch(jsonUrl);
- const currentModules = await response.json();
- // Only list supported-module, since the CMS 4 list includes some things we don't control or care about with other types.
- const relevant = currentModules.filter(module => module.type === 'supported-module');
- for (const module of relevant) {
- foundModules[module.github] = module;
- }
-}
-
async function rebuildReposList() {
- // Initialise this with repos that aren't in the supported-modules json
- // Or which will otherwise be filtered out due to their type
- const extraRepos = [
- // GitHub actions
- 'silverstripe/gha-action-ci',
- 'silverstripe/gha-auto-tag',
- 'silverstripe/gha-ci',
- 'silverstripe/gha-dispatch-ci',
- 'silverstripe/gha-gauge-release',
- 'silverstripe/gha-generate-matrix',
- 'silverstripe/gha-issue',
- 'silverstripe/gha-keepalive',
- 'silverstripe/gha-merge-up',
- 'silverstripe/gha-pull-request',
- 'silverstripe/gha-run-tests',
- 'silverstripe/gha-tag-release',
- 'silverstripe/gha-trigger-ci',
- 'silverstripe/gha-update-js',
- // tooling
- 'silverstripe/cow',
- 'silverstripe/rhino',
- 'silverstripe/github-issue-search-client',
- 'silverstripe/module-standardiser',
- 'silverstripe/silverstripe-tx-translator',
- 'silverstripe/markdown-php-codesniffer',
- 'silverstripe/silverstripe-standards',
- 'silverstripe/documentation-lint',
- // extra bits and bobs
- 'silverstripe/.github',
- 'silverstripe/eslint-config',
- 'silverstripe/webpack-config',
- 'silverstripe/silverstripe-module',
- 'silverstripe/api.silverstripe.org',
- 'silverstripe/doc.silverstripe.org',
- 'silverstripe/silverstripe-userhelp-content',
- 'silverstripe/demo.silverstripe.org',
- 'silverstripe/silverstripe-frameworktest',
- ];
-
- const allModules = {};
- for (const repo of extraRepos) {
- allModules[repo] = { github: repo };
- }
+ const coreModules = [];
+ const supportedModules = [];
+ const otherRepos = [];
// Merge in suported modules from all relevant major release lines.
// For modules which appear in more than one release line, prefer the most recent version.
- const urls = [
- 'https://raw.githubusercontent.com/silverstripe/supported-modules/4/modules.json',
- 'https://raw.githubusercontent.com/silverstripe/supported-modules/5/modules.json',
- ];
- for (const url of urls) {
- await getRelevantModules(url, allModules);
+ const response = await fetch('https://raw.githubusercontent.com/silverstripe/supported-modules/main/repositories.json');
+ const currentModules = await response.json();
+ for (const category of Object.keys(currentModules)) {
+ for (const repo of currentModules[category]) {
+ if (category === 'supportedModules') {
+ if (repo.isCore) {
+ coreModules.push(repo.github);
+ } else {
+ supportedModules.push(repo.github);
+ }
+ } else {
+ otherRepos.push(repo.github);
+ }
+ }
}
const out = [
{
id: 'core',
name: 'Core',
- repos: Object.values(allModules).filter(module => module.isCore).map(module => module.github)
+ repos: coreModules,
},
{
id: 'supported',
name: 'Supported',
// All supported modules including core
- repos: Object.values(allModules).map(module => module.github)
+ repos: [...coreModules, ...supportedModules],
+ },
+ {
+ id: 'other',
+ name: 'Other',
+ // All supported modules including core
+ repos: otherRepos,
}
];