mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-14 13:58:21 +00:00
* refactor(ci): move icon preview markup into a composite action Move generateChangedIconsCommentMarkup.mts into .github/actions/icon-preview as its own pnpm workspace package, following the suggest-metadata action. svgson and @lucide/helpers are now real dependencies installed with a filtered pnpm install, replacing the ad-hoc `npm install svgson --force`. Paths are resolved from the repo root relative to the script, so it also works through `pnpm --filter @lucide/icon-preview-action start`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(ci): skip icon preview comment when no icons changed When a pull request only deletes icons, CHANGED_FILES has no SVGs and the script printed "No changed icons found" to stdout, which was then posted as the preview comment. The script now logs that to stderr. The action writes no markup file and sets `has-changes=false`, the workflow skips the artifact upload, and the comment workflow skips its steps when no artifact exists instead of failing on the missing artifact. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci(icon-preview): post the preview comment from a pull_request_target workflow Like the PR title workflow, the icon preview now runs on pull_request_target and posts its comment directly, so comment-icon-preview.yml and the workflow_run artifact hand-off are removed. The job checks out the base branch and runs the action from there. The changed SVGs are read from the pull request head with `git fetch` + `git show` into a temp directory, so no code from the pull request is checked out or run. File names are checked against `icons/<kebab-case>.svg` before use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
68 lines
2.2 KiB
YAML
68 lines
2.2 KiB
YAML
name: Icon preview
|
|
description: Generates the icon preview comment markup for changed icons in a pull request.
|
|
|
|
inputs:
|
|
changed-files:
|
|
description: Space-separated list of changed icon files, relative to the repository root.
|
|
required: true
|
|
ref:
|
|
description: >-
|
|
Commit to read the changed icons from, e.g. the pull request head SHA. Only the changed SVG
|
|
files are taken from it with `git show`, nothing is checked out. Defaults to the working tree.
|
|
required: false
|
|
default: ''
|
|
output-file:
|
|
description: File the comment markup is written to.
|
|
required: false
|
|
default: comment-markup.md
|
|
|
|
outputs:
|
|
has-changes:
|
|
description: Whether any changed icons were found. When `false`, no output file is written.
|
|
value: ${{ steps.generate.outputs.has-changes }}
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Read changed icons from ref
|
|
id: read-ref
|
|
if: inputs.ref != ''
|
|
shell: bash
|
|
run: |
|
|
git fetch --no-tags --depth=1 origin "$REF"
|
|
|
|
for file in $CHANGED_FILES; do
|
|
# Only plain icon file names, so nothing from the pull request ends up in a path or the markup
|
|
if [[ ! "$file" =~ ^icons/[a-z0-9-]+\.svg$ ]]; then
|
|
echo "::error::Unexpected changed file: $file"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$RUNNER_TEMP/icon-preview/icons"
|
|
git show "$REF:$file" > "$RUNNER_TEMP/icon-preview/$file"
|
|
done
|
|
|
|
echo "dir=$RUNNER_TEMP/icon-preview" >> "$GITHUB_OUTPUT"
|
|
env:
|
|
CHANGED_FILES: ${{ inputs.changed-files }}
|
|
REF: ${{ inputs.ref }}
|
|
|
|
- name: Generate comment markup
|
|
id: generate
|
|
shell: bash
|
|
run: |
|
|
markup="$(node "$GITHUB_ACTION_PATH/generateChangedIconsCommentMarkup.mts")"
|
|
|
|
if [ -z "$markup" ]; then
|
|
echo "has-changes=false" >> "$GITHUB_OUTPUT"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p "$(dirname "$OUTPUT_FILE")"
|
|
printf '%s\n' "$markup" > "$OUTPUT_FILE"
|
|
echo "has-changes=true" >> "$GITHUB_OUTPUT"
|
|
env:
|
|
CHANGED_FILES: ${{ inputs.changed-files }}
|
|
CHANGED_FILES_DIR: ${{ steps.read-ref.outputs.dir }}
|
|
OUTPUT_FILE: ${{ inputs.output-file }}
|