X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=scripts%2Ffetch_version;fp=scripts%2Ffetch_version;h=0000000000000000000000000000000000000000;hp=5c4715a2cc65b5a0e983a60b43b4217f4a706012;hb=1a64deeb894dc95e2645a75771732c6cc53a79ad;hpb=fa25ffd4583cc362075cd5e1b4130f33306103f0 diff --git a/scripts/fetch_version b/scripts/fetch_version deleted file mode 100755 index 5c4715a..0000000 --- a/scripts/fetch_version +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin/env bash - -usage() { - echo "$0 file.json" - echo "$0 [-n|--name name] [-b|--branch branch_or_rev] [-f|--file out_file] [-h|--help] (-u|--url) url" - exit -} - -branch="master" -while [[ $# -gt 0 ]]; do - a="$1" - shift - case "$a" in - *.json) - file=$a - content=$(cat $a) - name="$(echo "$content" | jq -r ".meta.name")" - url="$(echo "$content" | jq -r ".meta.url")" - branch="$(echo "$content" | jq -r ".meta.branch")" - ;; - -n|--name) - name=$1 - shift - ;; - -u|--url) - url=$1 - shift - ;; - -b|--branch) - branch=$1 - shift - ;; - -f|--file) - file=$1 - shift - ;; - -h|--help) - usage - ;; - esac -done -if [ -z "$url" ]; then - usage -fi -if [ -z "$name" ]; then - name=$(echo "$url" | cut -d"/" -f5) -fi -if [ -z "$file" ]; then - file=$name.json -fi - -# function fetch_ledger () { -# pushd $HOME/projets/ledger >/dev/null 2>/dev/null -# git fetch origin -# tag="$(git describe origin/next | sed -e "s/^v//")" -# rev="$(git show-ref -s refs/remotes/origin/next)" -# sha="$(nix-prefetch-url --unpack file://<(git archive --format=tar.gz HEAD) 2>/dev/null)" -# popd >/dev/null 2>/dev/null -# } - -# awk_describe='BEGIN { -# FS = "[ /^]+" -# while ("git ls-remote " ARGV[1] "| sort -Vk2" | getline) { -# if (!sha) -# sha = substr($0, 1, 7) -# tag = $3 -# } -# while ("curl -s " ARGV[1] "/releases/tag/" tag | getline) -# if ($3 ~ "commits") -# com = $2 -# printf com ? "%s-%s-g%s\n" : "%s\n", tag, com, sha -# }' - -function get_ref () { - case "$1" in - refs/*) - echo "$1" - ;; - *) - echo "refs/heads/$1" - ;; - esac -} - -function get_name () { - branch="$1" - rev="$2" - minirev=${rev:0:7} - - case "$branch" in - refs/tags/*) - b="${branch#refs/tags/}" - echo "${b//\//-}" - ;; - refs/heads/*) - b=${branch#refs/heads/} - echo "$minirev-${b//\//-}" - ;; - refs/*) - b=${branch#refs/} - echo "$minirev-${b//\//-}" - ;; - *) - echo "$minirev-${branch//\//-}" - ;; - esac -} - -function fetch_github () { - rev="$(git ls-remote --refs $url $(get_ref $branch) | head -n1 | cut -f1)" - sha="$(nix-prefetch-url --unpack $url/archive/$rev.tar.gz)" - # Différent du git-describe et github-spécifique - #tag=$(echo "$awk_describe" | awk -f - $url | sed -e "s/^v//") - tag=$(get_name $branch $rev) -} - -function fetch_other () { - rev="$(git ls-remote --refs $url $(get_ref $branch) | head -n1 | cut -f1)" - sha="$(nix-prefetch-git --url $url --rev $(get_ref $branch) | jq -r '.sha256')" - tag=$(get_name $branch $rev) -} - -case "$url" in - https://*github.com/*) - fetch_github 2>/dev/null - owner=$(echo "$url" | cut -d"/" -f4) - repo=$(echo "$url" | cut -d"/" -f5) - - F='{ - "tag": $tag, - "meta": { - "name": $name, - "url": $url, - "branch": $branch - }, - "github": { - "owner": $owner, - "repo": $repo, - "rev": $rev, - "sha256": $sha, - "fetchSubmodules": true - } - }' - ;; - *) - fetch_other 2>/dev/null - F='{ - "tag": $tag, - "meta": { - "name": $name, - "url": $url, - "branch": $branch - }, - "git": { - "url": $url, - "rev": $rev, - "sha256": $sha, - "fetchSubmodules": true - } - }' - ;; -esac - -jq -n \ - --arg name "$name" \ - --arg owner "$owner" \ - --arg repo "$repo" \ - --arg tag "$tag" \ - --arg rev "$rev" \ - --arg url "$url" \ - --arg branch "$branch" \ - --arg sha "$sha" \ - "$F" > $file