]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - fetch_version
Improve iota cli app build
[perso/Immae/Config/Nix.git] / fetch_version
index cbbeb64468ea2e7fad064cffce9480e190593705..a0325f632789f5a7689bc199768547c4474eaa74 100755 (executable)
@@ -2,7 +2,7 @@
 
 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
 }
 
@@ -17,7 +17,6 @@ while [[ $# -gt 0 ]]; do
       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
@@ -72,18 +71,53 @@ fi
 #   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