usage() {
echo "$0 file.json"
- echo "$0 [-n|--name name] [-b|--branch branch] [-f|--file out_file] [-h|--help] (-u|--url) url"
+ echo "$0 [-n|--name name] [-b|--branch branch_or_rev] [-f|--file out_file] [-h|--help] (-u|--url) url"
exit
}
name="$(echo "$content" | jq -r ".meta.name")"
url="$(echo "$content" | jq -r ".meta.url")"
branch="$(echo "$content" | jq -r ".meta.branch")"
- break
;;
-n|--name)
name=$1
# 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 refs/heads/$branch | head -n1 | cut -f1)"
- sha="$(nix-prefetch-url --unpack $url/archive/$branch.tar.gz)"
+ 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=${rev:0:7}-$branch
+ tag=$(get_name $branch $rev)
}
function fetch_other () {
- rev="$(git ls-remote --refs $url refs/heads/$branch | head -n1 | cut -f1)"
- sha="$(nix-prefetch-git --url $url --rev refs/heads/$branch | jq -r '.sha256')"
- tag=${rev:0:7}-$branch
+ 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