#!/usr/bin/env nix-shell #! nix-shell -i bash -p curl xmlstarlet nix coreutils set -euxo pipefail SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" cd $SCRIPTPATH function update_savannah_branch() { branch=$1 echo emacs $branch # Get relevant data (commit id and timestamp) for the latest commit commit_data=$(curl "https://git.savannah.gnu.org/cgit/emacs.git/atom/?h=$branch" | xmlstarlet sel -N atom="http://www.w3.org/2005/Atom" -t -m /atom:feed/atom:entry -v "concat(atom:id,'/',atom:updated)" -n | head -n 1) # Extract commit sha and build a version number based on date: YYYYMMDD.0 commit_sha=$(echo $commit_data | cut -d '/' -f 1) version_number=$(echo $commit_data | cut -d '/' -f 2 | cut -d 'T' -f 1 | sed 's/-//g').0 output_branch=$(echo $branch | sed s/"\/"/"_"/) digest=$(nix-prefetch-url --unpack "https://git.savannah.gnu.org/cgit/emacs.git/snapshot/emacs-${commit_sha}.tar.gz") echo "{\"type\": \"savannah\", \"repo\": \"emacs\", \"rev\": \"${commit_sha}\", \"sha256\": \"${digest}\", \"version\": \"${version_number}\"}" > emacs-$output_branch.json } function update_github_repo() { owner=$1 repo=$2 branch=$3 output_name=$4 echo $repo $branch # Get relevant data (commit id and timestamp) for the latest commit commit_data=$(curl "https://github.com/$owner/$repo/commits/$branch.atom" | xmlstarlet sel -N atom="http://www.w3.org/2005/Atom" -t -m /atom:feed/atom:entry -v "concat(atom:id,'/',atom:updated)" -n | head -n 1) # Extract commit sha and build a version number based on date: YYYYMMDD.0 commit_sha=$(echo $commit_data | cut -d '/' -f 2) version_number=$(echo $commit_data | cut -d '/' -f 3 | cut -d 'T' -f 1 | sed 's/-//g').0 digest=$(nix-prefetch-url --unpack "https://github.com/$owner/$repo/archive/${commit_sha}.tar.gz") echo "{\"type\": \"github\", \"owner\": \"${owner}\", \"repo\": \"${repo}\", \"rev\": \"${commit_sha}\", \"sha256\": \"${digest}\", \"version\": \"${version_number}\"}" > $repo-$output_name.json } function update_release() { echo emacs release tag=$(git ls-remote --tags --refs --sort=-v:refname https://git.savannah.gnu.org/git/emacs.git 'emacs-[1-9]*' | grep -Eo 'emacs-.*' | grep -v '\-rc' | head -n1) digest=$(nix-prefetch-url --unpack "https://git.savannah.gnu.org/cgit/emacs.git/snapshot/${tag}.tar.gz") version_number=$(echo $tag | cut -d '-' -f 2) echo "{\"type\": \"savannah\", \"repo\": \"emacs\", \"rev\": \"${tag}\", \"sha256\": \"${digest}\", \"version\": \"${version_number}\"}" > emacs-unstable.json } update_savannah_branch master update_release update_github_repo emacs-lsp emacs json-rpc lsp nix-build --no-out-link --show-trace ./test.nix