name: Sync template dependencies
on:
schedule:
- cron: '0 8 * * 1' repository_dispatch:
types: [m2s2-libs-released]
workflow_dispatch:
jobs:
sync:
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
- name: Get latest npm versions
id: versions
run: |
REACT_LIB=$(npm view @m2s2/react-lib version 2>/dev/null || echo "")
NG_LIB=$(npm view @m2s2/ng-lib version 2>/dev/null || echo "")
VUE_LIB=$(npm view @m2s2/vue-lib version 2>/dev/null || echo "")
TOKENS=$(npm view @m2s2/tokens version 2>/dev/null || echo "")
echo "react_lib=$REACT_LIB" >> "$GITHUB_OUTPUT"
echo "ng_lib=$NG_LIB" >> "$GITHUB_OUTPUT"
echo "vue_lib=$VUE_LIB" >> "$GITHUB_OUTPUT"
echo "tokens=$TOKENS" >> "$GITHUB_OUTPUT"
- name: Update react template
if: ${{ steps.versions.outputs.react_lib != '' }}
run: |
VERSION="${{ steps.versions.outputs.react_lib }}"
sed -i "s|\"@m2s2/react-lib\": \"[^\"]*\"|\"@m2s2/react-lib\": \"^$VERSION\"|g" templates/react/package.json.hbs
- name: Update angular template
if: ${{ steps.versions.outputs.ng_lib != '' }}
run: |
VERSION="${{ steps.versions.outputs.ng_lib }}"
sed -i "s|\"@m2s2/ng-lib\": \"[^\"]*\"|\"@m2s2/ng-lib\": \"^$VERSION\"|g" templates/angular/package.json.hbs
- name: Update vue template
if: ${{ steps.versions.outputs.vue_lib != '' }}
run: |
VERSION="${{ steps.versions.outputs.vue_lib }}"
sed -i "s|\"@m2s2/vue-lib\": \"[^\"]*\"|\"@m2s2/vue-lib\": \"^$VERSION\"|g" templates/vue/package.json.hbs
- name: Update tokens in all templates
if: ${{ steps.versions.outputs.tokens != '' }}
run: |
VERSION="${{ steps.versions.outputs.tokens }}"
sed -i "s|\"@m2s2/tokens\": \"[^\"]*\"|\"@m2s2/tokens\": \"^$VERSION\"|g" templates/react/package.json.hbs
sed -i "s|\"@m2s2/tokens\": \"[^\"]*\"|\"@m2s2/tokens\": \"^$VERSION\"|g" templates/angular/package.json.hbs
sed -i "s|\"@m2s2/tokens\": \"[^\"]*\"|\"@m2s2/tokens\": \"^$VERSION\"|g" templates/vue/package.json.hbs
- name: Check for changes
id: diff
run: |
if git diff --quiet; then
echo "changed=false" >> "$GITHUB_OUTPUT"
else
echo "changed=true" >> "$GITHUB_OUTPUT"
fi
- name: Commit to main
if: ${{ steps.diff.outputs.changed == 'true' }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add templates/
git commit -m "fix: sync template dependencies to latest @m2s2 releases"
git push https://x-access-token:${{ steps.app-token.outputs.token }}@github.com/${{ github.repository }} main