[Groonga-commit] droonga/droonga-engine at 8298838 [master] Determine hostname while installation

Back to archive index

Kouhei Sutou kou****@clear*****
Tue Sep 16 12:17:30 JST 2014


> +
> +  [ ! -e $DROONGA_BASE_DIR/catalog.json -o ! -e $DROONGA_BASE_DIR/$NAME.yaml ] &&
> +    determine_hostname
> +

[ ... ] && ...よりも

> +  if [ ! -e $config_file ]; then
> +    curl -o $config_file.template $SCRIPT_URL/$PLATFORM/$NAME.yaml
> +    cat $config_file.template | \
> +      $sed -e "s/\\\$hostname/$HOST/" \
> +      > $config_file
> +    rm $config_file
> +  fi

のようにif ...; then; ...; fiの方が意図が明確なコードなので、
ifに書き方を統一するのはどうでしょうか?


In <8298838ca2228f7dfe577993340cacb67ca0e62e �� jenkins.clear-code.com>
  "[Groonga-commit] droonga/droonga-engine �� 8298838 [master] Determine hostname while installation" on Tue, 16 Sep 2014 12:14:57 +0900,
  YUKI Hiroshi <null+groonga �� clear-code.com> wrote:

> YUKI Hiroshi	2014-09-16 12:14:57 +0900 (Tue, 16 Sep 2014)
> 
>   New Revision: 8298838ca2228f7dfe577993340cacb67ca0e62e
>   https://github.com/droonga/droonga-engine/commit/8298838ca2228f7dfe577993340cacb67ca0e62e
> 
>   Message:
>     Determine hostname while installation
> 
>   Modified files:
>     install.sh
>     install/centos/droonga-engine.yaml
>     install/debian/droonga-engine.yaml
> 
>   Modified: install.sh (+73 -3)
> ===================================================================
> --- install.sh    2014-09-13 13:46:10 +0900 (a3f0e8e)
> +++ install.sh    2014-09-16 12:14:57 +0900 (85c7849)
> @@ -24,11 +24,17 @@ SCRIPT_URL=https://raw.githubusercontent.com/droonga/$NAME/master/install
>  REPOSITORY_URL=https://github.com/droonga/$NAME.git
>  USER=$NAME
>  DROONGA_BASE_DIR=/home/$USER/droonga
> +HOST=127.0.0.1
>  
>  if [ "$VERSION" = "" ]; then
>    export VERSION=release
>  fi
>  
> +case $(uname) in
> +  Darwin|*BSD|CYGWIN*) sed="sed -E" ;;
> +  *)                   sed="sed -r" ;;
> +esac
> +
>  exist_command() {
>    type "$1" > /dev/null 2>&1
>  }
> @@ -48,13 +54,77 @@ setup_configuration_directory() {
>  
>    [ ! -e $DROONGA_BASE_DIR ] &&
>      mkdir $DROONGA_BASE_DIR
> +
> +  [ ! -e $DROONGA_BASE_DIR/catalog.json -o ! -e $DROONGA_BASE_DIR/$NAME.yaml ] &&
> +    determine_hostname
> +
>    [ ! -e $DROONGA_BASE_DIR/catalog.json ] &&
> -    droonga-engine-catalog-generate --output=$DROONGA_BASE_DIR/catalog.json
> -  [ ! -e $DROONGA_BASE_DIR/$NAME.yaml ] &&
> -    curl -o $DROONGA_BASE_DIR/$NAME.yaml $SCRIPT_URL/$PLATFORM/$NAME.yaml
> +    droonga-engine-catalog-generate --hosts=$HOST --output=$DROONGA_BASE_DIR/catalog.json
> +
> +  config_file="$DROONGA_BASE_DIR/$NAME.yaml"
> +  if [ ! -e $config_file ]; then
> +    curl -o $config_file.template $SCRIPT_URL/$PLATFORM/$NAME.yaml
> +    cat $config_file.template | \
> +      $sed -e "s/\\\$hostname/$HOST/" \
> +      > $config_file
> +    rm $config_file
> +  fi
> +
>    chown -R $USER.$USER $DROONGA_BASE_DIR
>  }
>  
> +
> +get_addresses_with_interface() {
> +  if exist_command ip; then
> +    ip addr | grep "inet " | $sed -e "s/^ *inet ([0-9\.]+).+ ([^ ]+)\$/\1 \2/"
> +    return 0
> +  fi
> +
> +  if exist_command ifconfig; then
> +    interfaces=$(ifconfig -s | cut -d " " -f 1 | tail -n +2)
> +    for interface in $interfaces; do
> +      address=$(LANG=C ifconfig $interface | grep "inet addr" | $sed -e "s/^ *inet addr:([0-9\.]+).+\$/\1/")
> +      if [ "$address" != "" ]; then
> +        echo $address $interface
> +      fi
> +    done
> +    return 0
> +  fi
> +
> +  echo "127.0.0.1 lo"
> +  return 0
> +}
> +
> +determine_hostname() {
> +  if [ $(get_addresses_with_interface | wc -l) -eq 1 ]; then
> +    HOST=$(get_addresses_with_interface | cut -d " " -f 1)
> +    return 0
> +  fi
> +
> +  PS3="Which is the host that the initial replica for this node? > "
> +  select chosen in $(get_addresses_with_interface | $sed -e "s/ (.+)\$/(\1)/") "Manual Input"
> +  do
> +    if [ -z "$chosen" ]; then
> +      continue
> +    else
> +      HOST=$(echo $chosen | cut -d "(" -f 1)
> +      break
> +    fi
> +  done
> +
> +  if [ "$HOST" = "Manual Input" ]; then
> +    prompt="Enter the host name or IP address of the inital replica for this node: "
> +    echo -n "$prompt"
> +    while read HOST; do
> +      if [ "$HOST" != "" ]; then break; fi
> +      echo -n "$prompt"
> +    done
> +  fi
> +
> +  return 0
> +}
> +
> +
>  install_rroonga() {
>    # Install Rroonga globally from a public gem, because custom build
>    # doesn't work as we expect for Droonga...
> 
>   Modified: install/centos/droonga-engine.yaml (+1 -1)
> ===================================================================
> --- install/centos/droonga-engine.yaml    2014-09-13 13:46:10 +0900 (8edfc9d)
> +++ install/centos/droonga-engine.yaml    2014-09-16 12:14:57 +0900 (304029c)
> @@ -1,4 +1,4 @@
> -host: 127.0.0.1
> +host: $hostname
>  port: 10031
>  tag: droonga
>  daemon: true
> 
>   Modified: install/debian/droonga-engine.yaml (+1 -1)
> ===================================================================
> --- install/debian/droonga-engine.yaml    2014-09-13 13:46:10 +0900 (8edfc9d)
> +++ install/debian/droonga-engine.yaml    2014-09-16 12:14:57 +0900 (304029c)
> @@ -1,4 +1,4 @@
> -host: 127.0.0.1
> +host: $hostname
>  port: 10031
>  tag: droonga
>  daemon: true




More information about the Groonga-commit mailing list
Back to archive index