summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2014-12-11 15:21:58 +0100
committerChristophe Romain <christophe.romain@process-one.net>2014-12-11 15:21:58 +0100
commit7e6d310fe43a04909bc4e0db7884dc36de64fad0 (patch)
treeed7f3d7f3b7a1aedb250843df2ec5c0360446035 /tools
parentMerge pull request #374 from weiss/fix-muc-log-config (diff)
include static versions of deps in rebar.config/script (thanks to Holger Weiß)(EJAB-1730)
Diffstat (limited to 'tools')
-rwxr-xr-xtools/set-dep-versions78
1 files changed, 78 insertions, 0 deletions
diff --git a/tools/set-dep-versions b/tools/set-dep-versions
new file mode 100755
index 00000000..8d56cde4
--- /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