From 7e6d310fe43a04909bc4e0db7884dc36de64fad0 Mon Sep 17 00:00:00 2001 From: Christophe Romain Date: Thu, 11 Dec 2014 15:21:58 +0100 Subject: [PATCH] =?UTF-8?q?include=20static=20versions=20of=20deps=20in=20?= =?UTF-8?q?rebar.config/script=20(thanks=20to=20Holger=20Wei=C3=9F)(EJAB-1?= =?UTF-8?q?730)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/set-dep-versions | 78 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 tools/set-dep-versions diff --git a/tools/set-dep-versions b/tools/set-dep-versions new file mode 100755 index 000000000..8d56cde4d --- /dev/null +++ b/tools/set-dep-versions @@ -0,0 +1,78 @@ +#!/bin/sh + +set -e +set -u + +export PATH="/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:$PATH" + +deps_dir='deps' +rebar_script='rebar.config.script' +temp_file=$(mktemp "$rebar_script.XXXXXX") + +trap 'rm -f $temp_file' EXIT INT TERM + +die() +{ + echo >&2 "FATAL: $@." + exit 1 +} + +get_dep_list() +{ + sed -n \ + '/.*{ *\([^,]*\),[^,]*, *{git, *"\([^"]*\)".*/ { + s//\1,\2/ + p + }' "$rebar_script" +} + +get_dep_name() +{ + printf '%s' "${1%%,*}" +} + +get_dep_url() +{ + printf '%s' "${1#*,}" +} + +get_dep_rev() +{ + dep_name=$(get_dep_name "$1") + dep_dir="$deps_dir/$dep_name" + + test -d "$dep_dir" || clone_repo "$dep" + cd "$dep_dir" + printf '%s' "$(git rev-parse --verify HEAD)" + cd "$OLDPWD" +} + +clone_repo() +{ + dep_name=$(get_dep_name "$1") + dep_url=$(get_dep_url "$1") + + cd "$deps_dir" + git clone -q "$dep_url" "$dep_name" + cd "$OLDPWD" +} + +edit_rebar_script() +{ + dep_name=$(get_dep_name "$1") + dep_url=$(get_dep_url "$1") + dep_rev=$(get_dep_rev "$1") + + echo "Using revision $dep_rev of $dep_name" + sed "s|\"$dep_url\"[^}]*}|\"$dep_url\", \"$dep_rev\"}|" \ + "$rebar_script" >"$temp_file" + mv "$temp_file" "$rebar_script" +} + +test -e "$rebar_script" || die 'Please change to ejabberd source directory' +test -d "$deps_dir" || mkdir -p "$deps_dir" + +for dep in $(get_dep_list) +do + edit_rebar_script "$dep" +done