]> git.nbdom.net Git - nb.git/commitdiff
docker
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Mon, 14 Nov 2016 18:49:21 +0000 (18:49 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Mon, 14 Nov 2016 18:49:21 +0000 (18:49 +0000)
etc/profile.d/docker.sh

index 3880684b60c3f019b909d652c8f2981b20356114..efbd13764831c7b42a015b4ca0cc4eeedd2e92ea 100644 (file)
@@ -4,48 +4,54 @@ if [ -z "$MYVIMRC" ]; then
   [ -z "$DOCKER_CERT_PATH" -o ! -e "$DOCKER_CERT_PATH" ] && which docker-machine>/dev/null && docker-machine ls -q 2>/dev/null |grep -qFm1 docker && eval "$(docker-machine env docker)" 2>/dev/null
 fi
 
-_docker_name() {
-  if [ -n "$1" -a ! -e "$1" ]; then
-    echo "$1"
-    return
-  elif [ -n "$1" -a -e "$1" ]; then
-    cd "$1" 1>&2 || return 1
-    shift
-  elif [ -e Dockerfile ]; then
-    [ 1 = 1 ]
-  fi
-  basename $(pwd)
-}
-
 docker_build() {
   
-  local docker_name=$(_docker_name "$1") || return ; shift
-  [ ! -e Dockerfile ] && echo "Dockerfile missing in $(pwd)" 1>&2 && return
+  shell_help "Usage: $FUNCNAME [DIR_DOCKERFILE]" "$@" && return
+  local docker_name=$(basename "$(pwd)")
+  local pwd=""
 
+  if [ -n "$1" -a -d "$1" ]; then
+    pwd=$(pwd)
+    cd "$1" || return
+    docker_name=$(basename "$(pwd)")
+    shift
+  fi
+  [ ! -e Dockerfile ] && echo "$FUNCNAME: Dockerfile missing in $(pwd)" 1>&2 && return
+
+  local ex=0
   if [ -n "$(docker images -q $docker_name 2>/dev/null)" ]; then
-    echo "$docker_name already build."
-    return 1
+    echo "$FUNCNAME: $docker_name already build."
+    ex=1
 
   else
     perl -ne '/^\s*\#\s*DOCKER_BUILD\s*(.*?)$/ and system "$1"' Dockerfile
-    docker build --rm --force-rm=true -t $docker_name .
+    docker build --rm --force-rm=true -t $@ $docker_name .
 
     if [ "$?" != 0 ]; then
       docker rmi -f $(docker images -qf "dangling=true")
-      echo "Review your Docker file"
-      return 1
+      echo "$FUNCNAME: Review your Docker file"
+      ex=1
     fi
   fi
 
-  return 0
+  [ -n "$pwd" ] && cd "$pwd"
+  return $ex
 }
 
 docker_run() {
-  local docker_name=$(_docker_name "$1") || return
-  #[ -n "$1" -a -d "$1" ] && cd "$1"
-  shift
-  [ -e Dockerfile ] && perl -ne '/^\s*\#\s*DOCKER_RUN\s*(.*?)$/ and $RUN=1 and system "$1"; END{exit ($RUN ? 0 : 1)}' Dockerfile && return
-  docker run --rm -it --name $docker_name --hostname $docker_name $@ $docker_name
+  shell_help_noarg "Usage: $FUNCNAME [DIR_DOCKERFILE]" "$@" && return
+
+  local docker_name=$(basename `pwd`)
+  local pwd=""
+  if [ -n "$1" ]; then
+    [ -d "$1" ] && docker_name=$(basename $1) && pwd=`pwd` && cd "$1"
+    shift
+  fi
+  local opt
+  [ -z "$@" ] && opt=$(perl -ne '/^\s*\#\s*DOCKER_RUN\s*(.*?)$/&&print "$1 "' "Dockerfile" 2>/dev/null)
+  eval docker run --rm -it --name $docker_name --hostname $docker_name $opt$@ $docker_name
+
+  [ -n "$pwd" ] && cd "$pwd"
 }
 
 docker_clean() {