X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=launcher;h=f2658ad0d40dd30afadb24020c2153b0506389e9;hb=0dbab775b046fa0325c033da4190bb087b0ffefb;hp=50268d753d96be803f55076ea61e1ef90a05aa7e;hpb=06310c73c1f35eb41594decaece4853e613a7b7a;p=discourse_docker.git diff --git a/launcher b/launcher index 50268d7..f2658ad 100755 --- a/launcher +++ b/launcher @@ -64,7 +64,7 @@ git_rec_version='1.8.0' config_file=containers/"$config".yml cidbootstrap=cids/"$config"_bootstrap.cid local_discourse=local_discourse -image=discourse/discourse:1.3.5 +image=discourse/discourse:1.3.10 docker_path=`which docker.io || which docker` git_path=`which git` @@ -250,7 +250,7 @@ find_templates() { local arrTemplates=${templates// / } - if [ ! -z $templates ]; then + if [ ! -z "$templates" ]; then for template in "${arrTemplates[@]}" do local nested_templates=$(find_templates $template) @@ -322,6 +322,45 @@ RUBY echo "YAML syntax error. Please check your containers/*.yml config files." exit 1 fi + + read -r -d '' labels_ruby << 'RUBY' + require 'yaml' + + input=STDIN.readlines.join + # default to UTF-8 for the dbs sake + labels = {} + input.split('_FILE_SEPERATOR_').each do |yml| + yml.strip! + begin + labels.merge!(YAML.load(yml)['labels'] || {}) + rescue Psych::SyntaxError => e + puts e + puts "*ERROR." + rescue => e + puts yml + p e + end + end + puts labels.map{|k,v| "-l\n#{k}=#{v}" }.join("\n") +RUBY + + raw=`exec echo "$input" | $docker_path run $user_args --rm -i -a stdin -a stdout $image ruby -e "$labels_ruby"` + + labels=() + ok=1 + while read i; do + if [ "$i" == "*ERROR." ]; then + ok=0 + elif [ -n "$i" ]; then + labels[${#labels[@]}]=$i + fi + done <<< "$raw" + + if [ "$ok" -ne 1 ]; then + echo "${labels[@]}" + echo "YAML syntax error. Please check your containers/*.yml config files." + exit 1 + fi } if [ -z $docker_path ]; then @@ -478,8 +517,8 @@ run_start() { fi set -x - $docker_path run $user_args $links $attach_on_run $restart_policy "${env[@]}" -h "$hostname" \ - -e DOCKER_HOST_IP=$docker_ip --name $config -t $ports $volumes $mac_address $docker_args \ + $docker_path run $links $attach_on_run $restart_policy "${env[@]}" "${labels[@]}" -h "$hostname" \ + -e DOCKER_HOST_IP=$docker_ip --name $config -t $ports $volumes $mac_address $docker_args $user_args \ $run_image $boot_command ) @@ -605,7 +644,12 @@ case "$command" in elif [ $LOCAL = $BASE ]; then echo "Updating Launcher" git pull || (echo 'failed to update' && exit 1) - exec /bin/bash $0 $@ + + for (( i=${#BASH_ARGV[@]}-1,j=0; i>=0,j<${#BASH_ARGV[@]}; i--,j++ )) + do + args[$j]=${BASH_ARGV[$i]} + done + exec /bin/bash $0 "${args[@]}" # $@ is empty, because of shift at the beginning. Use BASH_ARGV instead. elif [ $REMOTE = $BASE ]; then echo "Your version of Launcher is ahead of origin"