Skip to content

Commit

Permalink
docs: add clean up images job DOC-1232
Browse files Browse the repository at this point in the history
  • Loading branch information
addetz committed Oct 22, 2024
1 parent 19be01a commit 8f7caf2
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 1 deletion.
71 changes: 71 additions & 0 deletions .github/workflows/clean-up-unused-images.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Clean Up Unused Images

on:
schedule:
# On the first of every month at 2 am
- cron: '0 2 1 * *'
workflow_dispatch:

concurrency:
group: clean-up-images-${{ github.ref }}
cancel-in-progress: true

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
find_unused_images:
runs-on: ubuntu-latest

steps:
- id: checkout
name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Nodejs
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Find unused images
run: make find-unused-images

- name: Install GitHub CLI
run: sudo apt-get install gh

- name: Create PR with unused images
run: |
# Ensure that we are on master.
git checkout master
# Create a new branch.
branch_name="clean-up-unused-images-$(date +%Y%m%d%H%M%S)"
git checkout -b "$branch_name"
# Remove all the images identified as unused.
for img in $(cat unused_images.json); do
rm static/assets/docs/images/$img
done
# Clean up results file.
rm unused_images.json
# Commit and push branch
git add .
git commit -m "docs: clean up unused images"
git push origin $branch_name
# Create the pull request
gh pr create --base master --title "docs: clean up librarium unused images " --body "$(cat <<EOF
## Describe the Change
This PR removes images identified as unused across all our branches.
The images are identified using `scripts/find-unused-images.sh` script.
Please review this PR carefully before merging it.
EOF
)"

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,5 @@ static/img/packs
vale/styles/spectrocloud/
vale/styles/spectrocloud-docs-internal/
vale/styles/config/vocabularies/spectrocloud-vocab

unused_images.json
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ clean-visuals:
@echo "Cleaning visual regression tests"

rm -rf test-results/ playwright-report/ screenshots/


##@ npm Targets

Expand Down Expand Up @@ -221,6 +220,12 @@ format-images: ## Format images
@echo "formatting images in /static/assets/docs/images/ folder"
./scripts/compress-convert-images.sh

###@ Find unused images assets

find-unused-images:
@echo "Find unused image assets"
./scripts/find-unused-images.sh

###@ Generate _partials/index.ts required to automatic partials usage.

generate-partials: ## Generate
Expand Down
44 changes: 44 additions & 0 deletions scripts/find-unused-images.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/bash

# Enable error handling
set -e

echo "Checking for unused image files in static/assets/docs/images folder..."

# Create a list of all the images we have and save it to a json.
# Trim the path static/assets/docs/images.
find static/assets/docs/images -type f ! -name ".DS_STORE" ! -name ".DS_Store" | sed 's|static/assets/docs/images||g' > all_images.json

# List all the version branches
branches="master"
version_branches=$(git branch --list "version-[0-9]-[0-9]")
branches+=" $version_branches"

for current_branch in $branches; do
git checkout $current_branch
echo "Current branch: $current_branch"
git pull

find docs -type f -name "*.md" -exec grep -Hn "\.webp" {} + > docs_used_images.json
find _partials -type f -name "*.mdx" -exec grep -Hn "\.webp" {} + > partials_used_images.json
cat docs_used_images.json partials_used_images.json > used_images.json

line_number=1
for img in $(cat all_images.json); do
if grep -q $img used_images.json; then
sed -i .bak "${line_number}s|.*|${img},FOUND_USED|" all_images.json
fi
((line_number++))
done

done

# Remove all marked used files to make up the list
sed '/FOUND_USED/d' all_images.json > unused_images.json

# Clean up files
rm all_images.json
rm all_images.json.bak
rm docs_used_images.json
rm partials_used_images.json
rm used_images.json

0 comments on commit 8f7caf2

Please sign in to comment.