Skip to content

Auto-sync test D ↞ [auto-sync from https://github.com/adamlui/js-util… #496

Auto-sync test D ↞ [auto-sync from https://github.com/adamlui/js-util…

Auto-sync test D ↞ [auto-sync from https://github.com/adamlui/js-util… #496

name: Sync README.md between <pkg>/ and <pkg>/docs
on:
push:
branches: [main]
paths: ["**/README.md"]
permissions:
contents: read
jobs:
build:
if: (github.repository == 'adamlui/js-utils') && (github.event.commits[0].committer.username != 'kudo-sync-bot')
runs-on: ubuntu-latest
env:
TZ: PST8PDT
steps:
- name: Checkout adamlui/js-utils
uses: actions/checkout@v4
with:
token: ${{ secrets.REPO_SYNC_PAT }}
repository: adamlui/js-utils
path: adamlui/js-utils
fetch-depth: 2
- name: Sync README.md between <pkg>/ and <pkg>/docs
run: |
cd ${{ github.workspace }}/adamlui/js-utils
# Init pkg paths
PKG_ROOTS=($(find . -type d -name "docs" `# paths to docs/` \
! -path "*/node_modules/*" `# exclude node_modules` \
! -path "*/minify.js|scss-to-css/*" `# exclude multi-platform pkgs w/ own sync scripts` \
-exec dirname {} \; | # get parent dir of found docs/
grep -Ev "^\.$")) # exclude repo root
# Sync READMEs per pkg
for pkg_root in "${PKG_ROOTS[@]}" ; do
# Init paths/content/mod timestamps
root_readme=$pkg_root"/README.md"
root_readme_content=$(git show HEAD:"$root_readme")
root_readme_modified=$(git log -1 --format="%ct" -- "$root_readme")
docs_readme=$pkg_root"/docs/README.md"
docs_readme_content=$(git show HEAD:"$docs_readme")
docs_readme_modified=$(git log -1 --format="%ct" -- "$docs_readme")
# Perform syncs of diff READMEs
if [[ "$root_readme_content" != "$docs_readme_content" ]] ; then
if (( $root_readme_modified > $docs_readme_modified )) ; then
cp -f "$root_readme" "$docs_readme"
echo "Copied $root_readme to $docs_readme"
src_folder="/${pkg_root#./}"
elif (( $docs_readme_modified > $root_readme_modified )) ; then
cp -f "$docs_readme" "$root_readme"
echo "Copied $docs_readme to $root_readme"
src_folder="/${pkg_root#./}/docs"
fi
fi
done
# Expose sync src for commit msg in next step
echo "SYNC_SRC=$src_folder" >> $GITHUB_ENV
- name: Escape backticks in commit msg
env:
COMMIT_MSG: ${{ github.event.head_commit.message }}
run: |
echo "ESCAPED_MSG<<EOF" >> $GITHUB_ENV
echo "$COMMIT_MSG" | sed 's/`/\`/g' >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Config committer
run: |
gpg --batch --import <(echo "${{ secrets.GPG_PRIVATE_KEY }}")
git config --global commit.gpgsign true
git config --global user.name "kudo-sync-bot"
git config --global user.email "[email protected]"
git config --global user.signingkey "${{ secrets.GPG_PRIVATE_ID }}"
- name: Push changes to adamlui/js-utils
if: env.SYNC_SRC
run: |
cd ${{ github.workspace }}/adamlui/js-utils
git pull # again to sync w/ concurrent workflow updates
git add .
git commit -n -m "$ESCAPED_MSG ↞ [auto-sync from ${{ env.SYNC_SRC }}]" || true
git push