Skip to content

Commit

Permalink
feat: update repo list (#49)
Browse files Browse the repository at this point in the history
* chore: maintain repo list

* chore: add source-testkit
  • Loading branch information
mshanemc committed Apr 25, 2024
1 parent e5aba66 commit 5fd7420
Show file tree
Hide file tree
Showing 3 changed files with 143 additions and 29 deletions.
14 changes: 12 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ A collection of [repositories](./repositories.json) used by the Salesforce CLI t

| Repository | Type | Package | Released |
|------------|:----:|---------|----------|
| [salesforcecli/cli](https://github.com/salesforcecli/cli) | ![type](https://img.shields.io/badge/%20-aggregator-orange) | [![NPM](https://img.shields.io/npm/v/@salesforce/cli.svg?label=@salesforce/cli)](https://www.npmjs.com/package/@salesforce/cli) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/cli?color=ffc16b&label=%20) |
| [salesforcecli/cli](https://github.com/salesforcecli/cli) | ![type](https://img.shields.io/badge/%20-aggregator-lightgrey) | [![NPM](https://img.shields.io/npm/v/@salesforce/cli.svg?label=@salesforce/cli)](https://www.npmjs.com/package/@salesforce/cli) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/cli?color=ffc16b&label=%20) |
| [salesforcecli/plugin-apex](https://github.com/salesforcecli/plugin-apex) | ![type](https://img.shields.io/badge/%20-plugin-blue) | [![NPM](https://img.shields.io/npm/v/@salesforce/plugin-apex.svg?label=@salesforce/plugin-apex)](https://www.npmjs.com/package/@salesforce/plugin-apex) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/plugin-apex?color=ffc16b&label=%20) |
| [salesforcecli/plugin-auth](https://github.com/salesforcecli/plugin-auth) | ![type](https://img.shields.io/badge/%20-plugin-blue) | [![NPM](https://img.shields.io/npm/v/@salesforce/plugin-auth.svg?label=@salesforce/plugin-auth)](https://www.npmjs.com/package/@salesforce/plugin-auth) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/plugin-auth?color=ffc16b&label=%20) |
| [salesforcecli/plugin-community](https://github.com/salesforcecli/plugin-community) | ![type](https://img.shields.io/badge/%20-plugin-blue) | [![NPM](https://img.shields.io/npm/v/@salesforce/plugin-community.svg?label=@salesforce/plugin-community)](https://www.npmjs.com/package/@salesforce/plugin-community) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/plugin-community?color=ffc16b&label=%20) |
Expand Down Expand Up @@ -36,6 +36,7 @@ A collection of [repositories](./repositories.json) used by the Salesforce CLI t
| [salesforcecli/plugin-trust](https://github.com/salesforcecli/plugin-trust) | ![type](https://img.shields.io/badge/%20-plugin-blue) | [![NPM](https://img.shields.io/npm/v/@salesforce/plugin-trust.svg?label=@salesforce/plugin-trust)](https://www.npmjs.com/package/@salesforce/plugin-trust) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/plugin-trust?color=ffc16b&label=%20) |
| [salesforcecli/plugin-user](https://github.com/salesforcecli/plugin-user) | ![type](https://img.shields.io/badge/%20-plugin-blue) | [![NPM](https://img.shields.io/npm/v/@salesforce/plugin-user.svg?label=@salesforce/plugin-user)](https://www.npmjs.com/package/@salesforce/plugin-user) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/plugin-user?color=ffc16b&label=%20) |
| [salesforcecli/cli-plugins-testkit](https://github.com/salesforcecli/cli-plugins-testkit) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/cli-plugins-testkit.svg?label=@salesforce/cli-plugins-testkit)](https://www.npmjs.com/package/@salesforce/cli-plugins-testkit) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/cli-plugins-testkit?color=ffc16b&label=%20) |
| [salesforcecli/source-testkit](https://github.com/salesforcecli/source-testkit) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/source-testkit.svg?label=@salesforce/source-testkit)](https://www.npmjs.com/package/@salesforce/source-testkit) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/source-testkit?color=ffc16b&label=%20) |
| [salesforcecli/sf-plugins-core](https://github.com/salesforcecli/sf-plugins-core) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/sf-plugins-core.svg?label=@salesforce/sf-plugins-core)](https://www.npmjs.com/package/@salesforce/sf-plugins-core) | ![GitHub Release Date](https://img.shields.io/github/release-date/salesforcecli/sf-plugins-core?color=ffc16b&label=%20) |
| [forcedotcom/salesforcedx-apex](https://github.com/forcedotcom/salesforcedx-apex) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/apex-node.svg?label=@salesforce/apex-node)](https://www.npmjs.com/package/@salesforce/apex-node) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/salesforcedx-apex?color=ffc16b&label=%20) |
| [forcedotcom/salesforcedx-templates](https://github.com/forcedotcom/salesforcedx-templates) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/templates.svg?label=@salesforce/templates)](https://www.npmjs.com/package/@salesforce/templates) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/salesforcedx-templates?color=ffc16b&label=%20) |
Expand All @@ -47,5 +48,14 @@ A collection of [repositories](./repositories.json) used by the Salesforce CLI t
| [forcedotcom/source-tracking](https://github.com/forcedotcom/source-tracking) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/source-tracking.svg?label=@salesforce/source-tracking)](https://www.npmjs.com/package/@salesforce/source-tracking) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/source-tracking?color=ffc16b&label=%20) |
| [forcedotcom/telemetry](https://github.com/forcedotcom/telemetry) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/telemetry.svg?label=@salesforce/telemetry)](https://www.npmjs.com/package/@salesforce/telemetry) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/telemetry?color=ffc16b&label=%20) |
| [forcedotcom/ts-types](https://github.com/forcedotcom/ts-types) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/ts-types.svg?label=@salesforce/ts-types)](https://www.npmjs.com/package/@salesforce/ts-types) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/ts-types?color=ffc16b&label=%20) |
| [forcedotcom/schemas](https://github.com/forcedotcom/schemas) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/schemas.svg?label=@salesforce/schemas)](https://www.npmjs.com/package/@salesforce/schemas) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/schemas?color=ffc16b&label=%20) |
| [forcedotcom/ts-sinon](https://github.com/forcedotcom/ts-sinon) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/ts-sinon.svg?label=@salesforce/ts-sinon)](https://www.npmjs.com/package/@salesforce/ts-sinon) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/ts-sinon?color=ffc16b&label=%20) |
| [salesforcecli/plugin-template-sf](https://github.com/salesforcecli/plugin-template-sf) | ![type](https://img.shields.io/badge/%20-template-purple) | | |
| [salesforcecli/plugin-template-sf-external](https://github.com/salesforcecli/plugin-template-sf-external) | ![type](https://img.shields.io/badge/%20-template-purple) | | |
| [forcedotcom/prettier-config](https://github.com/forcedotcom/prettier-config) | ![type](https://img.shields.io/badge/%20-config-lightblue) | [![NPM](https://img.shields.io/npm/v/@salesforce/prettier-config.svg?label=@salesforce/prettier-config)](https://www.npmjs.com/package/@salesforce/prettier-config) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/prettier-config?color=ffc16b&label=%20) |
| [forcedotcom/eslint-config-salesforce](https://github.com/forcedotcom/eslint-config-salesforce) | ![type](https://img.shields.io/badge/%20-config-lightblue) | [![NPM](https://img.shields.io/npm/v/eslint-config-salesforce.svg?label=eslint-config-salesforce)](https://www.npmjs.com/package/eslint-config-salesforce) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/eslint-config-salesforce?color=ffc16b&label=%20) |
| [forcedotcom/eslint-config-salesforce-license](https://github.com/forcedotcom/eslint-config-salesforce-license) | ![type](https://img.shields.io/badge/%20-config-lightblue) | [![NPM](https://img.shields.io/npm/v/eslint-config-salesforce-license.svg?label=eslint-config-salesforce-license)](https://www.npmjs.com/package/eslint-config-salesforce-license) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/eslint-config-salesforce-license?color=ffc16b&label=%20) |
| [forcedotcom/dev-config](https://github.com/forcedotcom/dev-config) | ![type](https://img.shields.io/badge/%20-config-lightblue) | [![NPM](https://img.shields.io/npm/v/@salesforce/dev-config.svg?label=@salesforce/dev-config)](https://www.npmjs.com/package/@salesforce/dev-config) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/dev-config?color=ffc16b&label=%20) |
| [forcedotcom/dev-scripts](https://github.com/forcedotcom/dev-scripts) | ![type](https://img.shields.io/badge/%20-library-yellowgreen) | [![NPM](https://img.shields.io/npm/v/@salesforce/dev-scripts.svg?label=@salesforce/dev-scripts)](https://www.npmjs.com/package/@salesforce/dev-scripts) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/dev-scripts?color=ffc16b&label=%20) |
| [forcedotcom/eslint-config-salesforce-typescript](https://github.com/forcedotcom/eslint-config-salesforce-typescript) | ![type](https://img.shields.io/badge/%20-config-lightblue) | [![NPM](https://img.shields.io/npm/v/eslint-config-salesforce-typescript.svg?label=eslint-config-salesforce-typescript)](https://www.npmjs.com/package/eslint-config-salesforce-typescript) | ![GitHub Release Date](https://img.shields.io/github/release-date/forcedotcom/eslint-config-salesforce-typescript?color=ffc16b&label=%20) |
| [salesforcecli/github-workflows](https://github.com/salesforcecli/github-workflows) | ![type](https://img.shields.io/badge/%20-GHA-orange) | | |

63 changes: 36 additions & 27 deletions generateReadme.js
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,26 +1,46 @@
const fs = require('fs');

const repositories = require('./repositories.json');

const readme = fs.readFileSync('./README.md', 'utf8');

const HEADER = '<!-- Repositories -->\n';
const repositoryIndex = readme.indexOf(HEADER);

let contents = `${HEADER}\n`;

const list = repositories;
const repoToTableRow = (repo) => {
const url = repo.url;
// Only supports github repositories right now
const [_, ghOrg, ghRepoName] = url.match(
/https:\/\/github.com\/(\w+)\/([\w_-]+)/
);
const slug = `${ghOrg}/${ghRepoName}`;
const supportsReleases =
typeof repo.supportsReleases === "boolean" ? repo.supportsReleases : true;

contents += '| Repository | Type | Package | Released |\n';
contents += '|------------|:----:|---------|----------|\n';
const repository = `[${slug}](https://github.com/${slug})`;
const type = repo.packages.map(getTypeBadge).join("<br>");
const packages = repo.packages.map(getPackageBadge).join("<br>");
const released =
!repo.private && supportsReleases
? `![GitHub Release Date](https://img.shields.io/github/release-date/${slug}?color=ffc16b&label=%20)`
: "";

const tableSegments = [repository, type, packages, released];
return `| ${tableSegments.join(" | ")} |`;
};

const colorMap = new Map([
['library', 'yellowgreen'],
['plugin', 'blue'],
['GHA', 'orange'],
['config', 'lightblue'],
['template', 'purple'],
])
/**
* Get the img.shield badge as <type>.
* @param {name: string, type: 'package' | 'library' } package
*/
function getTypeBadge(package) {
const color = package.type === 'plugin' ? 'blue' : package.type === 'library' ? 'yellowgreen' : 'orange';

const color = colorMap.get(package.type) ?? 'lightgrey';
return `![type](https://img.shields.io/badge/%20-${package.type}-${color})`;
}

Expand All @@ -29,28 +49,17 @@ function getTypeBadge(package) {
* @param {name: string, type: 'package' | 'library' } package
*/
function getPackageBadge(package) {
if(package.type !== 'GHA') {
if(package.type !== 'GHA' && package.name) {
return `[![NPM](https://img.shields.io/npm/v/${package.name}.svg?label=${package.name})](https://www.npmjs.com/package/${package.name})`;
}
}

for (const repo of list) {
const url = repo.url;
// Only supports github repositories right now
const [_, ghOrg, ghRepoName] = url.match(/https:\/\/github.com\/(\w+)\/([\w_-]+)/);
const slug = `${ghOrg}/${ghRepoName}`;
const supportsReleases = typeof repo.supportsReleases === 'boolean' ? repo.supportsReleases : true;

const repository = `[${slug}](https://github.com/${slug})`;
const type = repo.packages.map(getTypeBadge).join('<br>');
const packages = repo.packages.map(getPackageBadge).join('<br>');
const released = !repo.private && supportsReleases ? `![GitHub Release Date](https://img.shields.io/github/release-date/${slug}?color=ffc16b&label=%20)` : '';

const tableSegments = [repository, type, packages, released];
contents += `| ${tableSegments.join(' | ')} |\n`;
}

contents += '\n';
const contents = [
HEADER,
"| Repository | Type | Package | Released |",
"|------------|:----:|---------|----------|",
...repositories.map(repoToTableRow),
];

const newContents = readme.substring(0, repositoryIndex) + contents;
const newContents = readme.substring(0, repositoryIndex) + contents.join('\n') + '\n';
fs.writeFileSync('README.md', newContents, '')
95 changes: 95 additions & 0 deletions repositories.json
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,15 @@
}
]
},
{
"url": "https://github.com/salesforcecli/source-testkit",
"packages": [
{
"name": "@salesforce/source-testkit",
"type": "library"
}
]
},
{
"url": "https://github.com/salesforcecli/sf-plugins-core",
"packages": [
Expand Down Expand Up @@ -351,6 +360,92 @@
}
]
},
{
"url": "https://github.com/forcedotcom/schemas",
"packages": [
{
"name": "@salesforce/schemas",
"type": "library"
}
]
},
{
"url": "https://github.com/forcedotcom/ts-sinon",
"packages": [
{
"name": "@salesforce/ts-sinon",
"type": "library"
}
]
},
{
"url": "https://github.com/salesforcecli/plugin-template-sf",
"supportsReleases": false,
"packages" : [{"type": "template"}]
},
{
"url": "https://github.com/salesforcecli/plugin-template-sf-external",
"supportsReleases": false,
"packages": [
{
"type": "template"
}
]
},
{
"url": "https://github.com/forcedotcom/prettier-config",
"packages": [
{
"name": "@salesforce/prettier-config",
"type": "config"
}
]
},
{
"url": "https://github.com/forcedotcom/eslint-config-salesforce",
"packages": [
{
"name": "eslint-config-salesforce",
"type": "config"
}
]
},
{
"url": "https://github.com/forcedotcom/eslint-config-salesforce-license",
"packages": [
{
"name": "eslint-config-salesforce-license",
"type": "config"
}
]
},
{
"url": "https://github.com/forcedotcom/dev-config",
"packages": [
{
"name": "@salesforce/dev-config",
"type": "config"
}
]
},
{
"url": "https://github.com/forcedotcom/dev-scripts",
"packages": [
{
"name": "@salesforce/dev-scripts",
"type": "library"
}
]
},
{
"url": "https://github.com/forcedotcom/eslint-config-salesforce-typescript",
"packages": [
{
"name": "eslint-config-salesforce-typescript",
"type": "config"
}
]
},
{
"url": "https://github.com/salesforcecli/github-workflows",
"packages": [
Expand Down

0 comments on commit 5fd7420

Please sign in to comment.