usage() {
echo "$0 file.json"
- echo "$0 [-n|--name name] [-b|--branch branch] [-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
}
branch=$1
shift
;;
+ -f|--file)
+ file=$1
+ shift
+ ;;
-h|--help)
usage
;;
# 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)
}
-fetch_github 2>/dev/null
+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)
+}
-owner=$(echo "$url" | cut -d"/" -f4)
-repo=$(echo "$url" | cut -d"/" -f5)
+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
- }
-}'
+ 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" \