All consumers would then have to bring this script into their repo, since GitHub doesn't have something like Nix's string context.
61 lines
2.0 KiB
YAML
61 lines
2.0 KiB
YAML
name: 'Update flake.lock'
|
|
description: 'Update your flake.lock and send a PR'
|
|
inputs:
|
|
inputs:
|
|
description: 'A space-separated list of inputs to update. Leave empty to update all inputs.'
|
|
required: false
|
|
default: ''
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- run: |
|
|
if [[ -n '${{ inputs.inputs }}' ]]; then
|
|
inputs=()
|
|
for input in ${{ inputs.inputs }}; do
|
|
inputs+=("--update-input" "$input")
|
|
done
|
|
nix flake lock "${inputs[@]}" --commit-lock-file
|
|
else
|
|
nix flake update --commit-lock-file
|
|
fi
|
|
shell: bash
|
|
env:
|
|
GIT_AUTHOR_NAME: github-actions[bot]
|
|
GIT_AUTHOR_EMAIL: <github-actions[bot]@users.noreply.github.com>
|
|
GIT_COMMITTER_NAME: github-actions[bot]
|
|
GIT_COMMITTER_EMAIL: <github-actions[bot]@users.noreply.github.com>
|
|
- run: |
|
|
content="$(git log --format=%b -n 1)"
|
|
content="${content//'%'/'%25'}"
|
|
content="${content//$'\n'/'%0A'}"
|
|
content="${content//$'\r'/'%0D'}"
|
|
echo "::set-output name=msg::$content"
|
|
shell: bash
|
|
id: commit_message
|
|
- name: Create PR
|
|
uses: peter-evans/create-pull-request@v3
|
|
with:
|
|
branch: update_flake_lock_action
|
|
delete-branch: true
|
|
title: "flake.lock: Update"
|
|
body: |
|
|
Automated changes by the [update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) GitHub Action.
|
|
|
|
```
|
|
${{ steps.commit_message.outputs.msg }}
|
|
```
|
|
|
|
### Running GitHub Actions on this PR
|
|
|
|
GitHub Actions will not run workflows on pull requests which are opened by a GitHub Action.
|
|
|
|
To run GitHub Actions workflows on this PR, run:
|
|
|
|
```sh
|
|
git branch -D update_flake_lock_action
|
|
git fetch origin
|
|
git checkout update_flake_lock_action
|
|
git commit --amend --no-edit
|
|
git push origin update_flake_lock_action --force
|
|
```
|