90 lines
1.8 KiB
Bash
90 lines
1.8 KiB
Bash
|
#! /usr/bin/env nix-shell
|
||
|
#! nix-shell -i bash -p curl jq
|
||
|
set -euo pipefail
|
||
|
|
||
|
nixpkgs="$(git rev-parse --show-toplevel)"
|
||
|
castopod_nix="$nixpkgs/pkgs/applications/audio/castopod/default.nix"
|
||
|
|
||
|
# https://www.meetup.com/api/guide/#p02-querying-section
|
||
|
query='
|
||
|
query allReleases($fullPath: ID!, $first: Int, $last: Int, $before: String, $after: String, $sort: ReleaseSort) {
|
||
|
project(fullPath: $fullPath) {
|
||
|
id
|
||
|
releases(
|
||
|
first: $first
|
||
|
last: $last
|
||
|
before: $before
|
||
|
after: $after
|
||
|
sort: $sort
|
||
|
) {
|
||
|
nodes {
|
||
|
...Release
|
||
|
__typename
|
||
|
}
|
||
|
__typename
|
||
|
}
|
||
|
__typename
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fragment Release on Release {
|
||
|
id
|
||
|
name
|
||
|
tagName
|
||
|
releasedAt
|
||
|
createdAt
|
||
|
upcomingRelease
|
||
|
historicalRelease
|
||
|
assets {
|
||
|
links {
|
||
|
nodes {
|
||
|
id
|
||
|
name
|
||
|
url
|
||
|
directAssetUrl
|
||
|
linkType
|
||
|
__typename
|
||
|
}
|
||
|
__typename
|
||
|
}
|
||
|
__typename
|
||
|
}
|
||
|
__typename
|
||
|
}
|
||
|
'
|
||
|
variables='{
|
||
|
"fullPath": "adaures/castopod",
|
||
|
"first": 1,
|
||
|
"sort": "RELEASED_AT_DESC"
|
||
|
}'
|
||
|
|
||
|
post=$(cat <<EOF
|
||
|
{"query": "$(echo $query)", "variables": $(echo $variables)}
|
||
|
EOF
|
||
|
)
|
||
|
|
||
|
json="$(curl -s -X POST https://code.castopod.org/api/graphql \
|
||
|
-H 'Content-Type: application/json' \
|
||
|
-d "$post")"
|
||
|
|
||
|
echo "$json"
|
||
|
TAG=$(echo $json | jq -r '.data.project.releases.nodes[].tagName')
|
||
|
ASSET_URL=$(echo $json | jq -r '.data.project.releases.nodes[].assets.links.nodes[].url' | grep .tar.gz$)
|
||
|
|
||
|
CURRENT_VERSION=$(nix eval -f "$nixpkgs" --raw castopod.version)
|
||
|
VERSION=${TAG:1}
|
||
|
|
||
|
if [[ "$CURRENT_VERSION" == "$VERSION" ]]; then
|
||
|
echo "castopod is up-to-date: ${CURRENT_VERSION}"
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
SHA256=$(nix-prefetch-url "$ASSET_URL")
|
||
|
|
||
|
URL=$(echo $ASSET_URL | sed -e 's/[\/&]/\\&/g')
|
||
|
|
||
|
sed -e "s/version =.*;/version = \"$VERSION\";/g" \
|
||
|
-e "s/url =.*;/url = \"$URL\";/g" \
|
||
|
-e "s/sha256 =.*;/sha256 = \"$SHA256\";/g" \
|
||
|
-i "$castopod_nix"
|