Skip to content

Update nvfetcher

Update nvfetcher #1911

name: Update nvfetcher
on:
workflow_dispatch: {}
schedule:
- cron: 0 * * * *
push:
branches:
- main
paths:
- pkgs/nvfetcher.toml
jobs:
update-nvfetcher:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v16
- name: Set up Magic Nix Cache
uses: DeterminateSystems/magic-nix-cache-action@v8
- name: Run nvfetcher
id: run-nvfetcher
run: |
cd pkgs
nix-shell -p nvfetcher --command 'nvfetcher -l /tmp/nvfetcher-changes'
{
echo 'changes<<EOF'
cat /tmp/nvfetcher-changes
echo 'EOF'
} >> "$GITHUB_OUTPUT"
- name: Update vendor hashes
id: update-vendorhash
run: |
setHash () {
jq --arg app "${1}" --arg hash "${2}" '.[$app] = $hash' pkgs/_sources/vendorhash.json > tmp.json
mv tmp.json pkgs/_sources/vendorhash.json
}
declare -a APP_NAMES
while read line; do
APP_NAMES+=("${line%:*}")
done < /tmp/nvfetcher-changes
for APP_NAME in "${APP_NAMES[@]}"; do
echo "Updating vendor hash for ${APP_NAME}..."
setHash "${APP_NAME}" ""
vendorHash=$(nix build --no-link .#${APP_NAME} 2>&1 >/dev/null | grep "got:" | cut -d':' -f2 | sed 's| ||g')
if [[ -n "${vendorHash}" ]]; then
setHash "${APP_NAME}" "${vendorHash}"
echo "Updated ${APP_NAME} with vendorHash: ${vendorHash}"
fi
done
- name: Generate Token
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.LAB_ASSISTANT_APP_ID }}
private-key: ${{ secrets.LAB_ASSISTANT_APP_KEY }}
- name: Create Pull Request
id: create-pull-request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ steps.app-token.outputs.token }}
branch: nvfetcher/deps
title: "chore(deps): Update packages managed by nvfetcher"
commit-message: "chore(deps): Update packages managed by nvfetcher"
body: |
## Changes:
${{ steps.run-nvfetcher.outputs.changes }}
add-paths: |
pkgs/**
delete-branch: true