[Feedback] Publish icon list as part of the build process
rfearing opened this issue · 1 comments
rfearing commented
Describe the topic
I've created an app that allows Contentful users to select an octicon as a dropdown option. I've created a weekly action to check the local list of octicons against the latest list in @primer/octicons
. I propose that a list be provided as part of the octicons build process. As reference, this is the action I've created:
name: Validate Octicon List
# Run the Monday of each week:
on:
schedule:
- cron: '0 0 * * 1'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# Take the local list of octicons, sort them and make a comma separated list of them
- name: Extract local icons
id: extract_local
uses: actions/github-script@v6
with:
result-encoding: string
script: |
const fs = require('fs');
const localOcticons = require('./apps/octicons/src/locations/octicons.js').octicons
.sort().map(icon => icon.replace(/.*\/(.*)-16\.svg/, '$1')
.replace(/-/g, '_'));
return localOcticons;
# Take the list of svg files with -16.svg,
# remove the path and the -16.svg
# then replace - with _ and sort them
# Make a comma separated list of them
- name: Extract official icons
id: extract_official
run: |
npm install @primer/octicons
officialOcticons=$(ls node_modules/@primer/octicons/build/svg/*-16.svg | sed 's/.*\///; s/-16\.svg//' | sed 's/-/_/g' | sort -u | tr '\n' ','s | sed 's/,$//')
echo "officialOcticons=${officialOcticons}" >> $GITHUB_OUTPUT
# Compare the two lists and output for .md file
- name: Compare icons
id: compare_octicons
uses: actions/github-script@v6
with:
result-encoding: string
script: |
const localOcticons = "${{ steps.extract_local.outputs.result }}".trim().split(',');
const officialOcticons = "${{ steps.extract_official.outputs.officialOcticons }}".trim().split(',');
const mismatched = [...localOcticons, ...officialOcticons].filter(icon => !officialOcticons.includes(icon) || !localOcticons.includes(icon));
if (mismatched.length > 0) {
return mismatched.join('\n- ');
} else {
return 'no mismatches';
}
# If there is a mismatch, create an issue and assign it to marketing-platform-services
- name: Create issue
id: create_issue
if: ${{ steps.compare_octicons.outputs.result != 'no mismatches' }}
uses: JasonEtco/create-an-issue@v2
with:
filename: .github/octicons-issue-template.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MISMATCH: ${{ steps.compare_octicons.outputs.result}}
github-actions commented
Hi! This issue has been marked as stale because it has been open with no activity for 180 days. You can comment on the issue or remove the stale label to keep it open. If you do nothing, this issue will be closed in 7 days.