--- name: Update repository with Cruft permissions: contents: write pull-requests: write actions: write on: schedule: - cron: "0 0 * * *" env: PYTHON_VERSION: 3.13 jobs: update: runs-on: ubuntu-latest strategy: fail-fast: true matrix: include: - add-paths: . body: Use this to merge the changes to this repository. branch: cruft/update commit-message: "chore: accept new Cruft update" title: New updates detected with Cruft - add-paths: .cruft.json body: Use this to reject the changes in this repository. branch: cruft/reject commit-message: "chore: reject new Cruft update" title: Reject new updates detected with Cruft steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install Cruft run: pip3 install cruft - name: Check if update is available continue-on-error: false id: check run: | CHANGES=0 if [ -f .cruft.json ]; then if ! cruft check; then CHANGES=1 fi else echo "No .cruft.json file" fi echo "has_changes=$CHANGES" >> "$GITHUB_OUTPUT" - name: Run update if available if: steps.check.outputs.has_changes == '1' run: | git config --global user.email "allen.porter@gmail.com" git config --global user.name "Allen Porter" cruft update --skip-apply-ask --refresh-private-variables git restore --staged . - name: Create pull request if: steps.check.outputs.has_changes == '1' uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.GITHUB_TOKEN }} add-paths: ${{ matrix.add-paths }} commit-message: ${{ matrix.commit-message }} branch: ${{ matrix.branch }} delete-branch: true branch-suffix: timestamp title: ${{ matrix.title }} body: | This is an autogenerated PR. ${{ matrix.body }} [Cruft](https://cruft.github.io/cruft/) has detected updates from the Cookiecutter repository.