add Hangover #2310
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Zip Preview | |
on: | |
issues: | |
types: [opened, edited] | |
issue_comment: | |
types: [created, edited] | |
permissions: | |
issues: write | |
jobs: | |
zip_preview_issue: | |
if: ${{ contains(github.event_name, 'issues') && contains(github.event.issue.labels.*.name, 'Zip/PR included') }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Generate Preview Content | |
id: zip_preview | |
env: | |
body: ${{ github.event.issue.body }} | |
run: | | |
zip_url="$(echo "$body" | sed -n '/### Upload file or Add PR Link/,/###/p' | grep -v "###" | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*.zip(\?raw=true|)" | head -n 1)" | |
if [ -z "$zip_url" ]; then | |
exit 0 | |
else | |
wget -O download.zip "$zip_url" | |
echo "sha1=$(sha1sum download.zip | awk {'print $1}')" >> $GITHUB_OUTPUT | |
unzip download.zip | |
rm -f download.zip | |
files="$(find ./ -not -name '*.png' -type f | sed 's|^./||')" | |
echo "zip_preview<<EOF" >> $GITHUB_OUTPUT | |
echo '<details>' >> $GITHUB_OUTPUT | |
echo '<summary>Click to show contents preview</summary>' >> $GITHUB_OUTPUT | |
echo '' >> $GITHUB_OUTPUT | |
IFS=$'\n' | |
for file in $files; do | |
file_basename="$(basename "$file")" | |
echo '`'"$file"'`' >> $GITHUB_OUTPUT | |
if [ "$file_basename" == install ] || [ "$file_basename" == install-32 ] || [ "$file_basename" == install-64 ] || [ "$file_basename" == uninstall ]; then | |
echo '```bash' >> $GITHUB_OUTPUT | |
else | |
echo '```' >> $GITHUB_OUTPUT | |
fi | |
cat "$file" >> $GITHUB_OUTPUT | |
echo $'\n''```' >> $GITHUB_OUTPUT | |
done | |
echo '' >> $GITHUB_OUTPUT | |
echo '</details>' >> $GITHUB_OUTPUT | |
echo "EOF" >> $GITHUB_OUTPUT | |
fi | |
- name: Find Comment | |
uses: peter-evans/find-comment@v3 | |
if: steps.zip_preview.outputs.zip_preview | |
id: fc | |
with: | |
issue-number: ${{ github.event.issue.number }} | |
comment-author: 'github-actions[bot]' | |
body-includes: "The sha1sum of the zip was: ${{ steps.zip_preview.outputs.sha1 }}" | |
- name: Add zip preview comment for issue | |
uses: peter-evans/create-or-update-comment@v4 | |
if: steps.zip_preview.outputs.zip_preview | |
with: | |
comment-id: ${{ steps.fc.outputs.comment-id }} | |
issue-number: ${{ github.event.issue.number }} | |
edit-mode: replace | |
body: | | |
A zipfile was found in the body of your issue. | |
The sha1sum of the zip was: ${{ steps.zip_preview.outputs.sha1 }} | |
${{ steps.zip_preview.outputs.zip_preview }} | |
zip_preview_issue_comment: | |
if: ${{ !contains(github.event_name, 'issues') && contains(github.event_name, 'issue_comment') && contains(github.event.issue.labels.*.name, 'Zip/PR included') && !github.event.issue.pull_request }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Generate Preview Content | |
id: zip_preview | |
env: | |
body: ${{ github.event.comment.body }} | |
run: | | |
zip_url="$(echo "$body" | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*.zip(\?raw=true|)" | head -n 1)" | |
if [ -z "$zip_url" ]; then | |
exit 0 | |
else | |
wget -O download.zip "$zip_url" | |
echo "sha1=$(sha1sum download.zip | awk {'print $1}')" >> $GITHUB_OUTPUT | |
unzip download.zip | |
rm -f download.zip | |
files="$(find ./ -not -name '*.png' -type f | sed 's|^./||')" | |
echo "zip_preview<<EOF" >> $GITHUB_OUTPUT | |
echo '<details>' >> $GITHUB_OUTPUT | |
echo '<summary>Click to show contents preview</summary>' >> $GITHUB_OUTPUT | |
echo '' >> $GITHUB_OUTPUT | |
IFS=$'\n' | |
for file in $files; do | |
file_basename="$(basename "$file")" | |
echo '`'"$file"'`' >> $GITHUB_OUTPUT | |
if [ "$file_basename" == install ] || [ "$file_basename" == install-32 ] || [ "$file_basename" == install-64 ] || [ "$file_basename" == uninstall ]; then | |
echo '```bash' >> $GITHUB_OUTPUT | |
else | |
echo '```' >> $GITHUB_OUTPUT | |
fi | |
cat "$file" >> $GITHUB_OUTPUT | |
echo $'\n''```' >> $GITHUB_OUTPUT | |
done | |
echo '' >> $GITHUB_OUTPUT | |
echo '</details>' >> $GITHUB_OUTPUT | |
echo "EOF" >> $GITHUB_OUTPUT | |
fi | |
- name: Find Comment | |
uses: peter-evans/find-comment@v3 | |
if: steps.zip_preview.outputs.zip_preview | |
id: fc | |
with: | |
issue-number: ${{ github.event.issue.number }} | |
comment-author: 'github-actions[bot]' | |
body-includes: "The sha1sum of the zip was: ${{ steps.zip_preview.outputs.sha1 }}" | |
- name: Add zip preview comment for issue comment | |
uses: peter-evans/create-or-update-comment@v4 | |
if: steps.zip_preview.outputs.zip_preview | |
with: | |
comment-id: ${{ steps.fc.outputs.comment-id }} | |
issue-number: ${{ github.event.issue.number }} | |
edit-mode: replace | |
body: | | |
A zipfile was found in the body of an issue comment. | |
The sha1sum of the zip was: ${{ steps.zip_preview.outputs.sha1 }} | |
${{ steps.zip_preview.outputs.zip_preview }} |