Typo.
[xremote.git] / xremote.sh
index d425792..c093b62 100755 (executable)
@@ -18,7 +18,8 @@
 #########################################################################
 
 set -e
-set -o pipefail
+
+# set -o pipefail
 
 ######################################################################
 
@@ -34,7 +35,7 @@ function check_remote_is_defined () {
 
 function help () {
     cat <<EOF
-xremote.sh <script>
+xremote.sh <script> [arguments]
 
   This script takes a script as argument and executes it remotely in a
   temporary directory on a ssh-accessible server.
@@ -56,7 +57,7 @@ xremote.sh <script>
     @XREMOTE_PRE: ln -s /home/fleuret/data/pytorch ./data
 
   If no argument is provided to @XREMOTE_HOST, the environment
-  variable $XREMOTE_HOST is used instead
+  variable \$XREMOTE_HOST is used instead
 
   Contact <francois@fleuret.org> for comments.
 
@@ -80,6 +81,8 @@ main="$(basename "$1")"
 
 cd "$(dirname "$1")"
 
+shift
+
 trap cleanup_remote_tmp EXIT
 
 ######################################################################
@@ -103,12 +106,14 @@ do
 
             PRE)
                 check_remote_is_defined
+                echo "xremote: ${value}"
                 ssh < /dev/null "${REMOTE_HOST}" "cd \"${REMOTE_DIR}\" && ${value}"
                 ;;
 
             SEND)
                 check_remote_is_defined
-                tar c ${value} | ssh "${REMOTE_HOST}" "cd \"${REMOTE_DIR}\" && tar mx"
+                echo "xremote: -- sending files --------------------------------------------"
+                tar ch ${value} | ssh "${REMOTE_HOST}" "cd \"${REMOTE_DIR}\" && tar mxv"
                 ;;
 
             HOST)
@@ -117,6 +122,7 @@ do
                 [[ "${REMOTE_HOST}" ]] || REMOTE_HOST="${XREMOTE_HOST}"
                 [[ "${REMOTE_HOST}" ]] || (echo "xremote: No remote host specified." >&2 && exit 1)
                 REMOTE_DIR="$(ssh </dev/null "${REMOTE_HOST}" mktemp -d /tmp/xremote.from_"$(hostname)_$(date +%Y%m%d-%H%M%S)".XXXXXX)"
+                echo "xremote: target is ${REMOTE_HOST}"
                 ;;
         esac
     fi
@@ -129,7 +135,7 @@ check_remote_is_defined
 
 tar c "${main}" | ssh "${REMOTE_HOST}" "cd \"${REMOTE_DIR}\" && tar mx"
 
-echo "xremote: on ${REMOTE_HOST}"
+echo "xremote: -- running the executable -----------------------------------"
 
 if [[ "${REMOTE_EXEC}" ]]
 then
@@ -138,14 +144,21 @@ else
     REMOTE_COMMAND="./${main}"
 fi
 
-echo "xremote: -- stdout ---------------------------------------------------"
-ssh </dev/null "${REMOTE_HOST}" "cd \"${REMOTE_DIR}\" && ${REMOTE_COMMAND}"
+######################################################################
+
+# I find this slightly ugly ...
+for s in "$@"
+do
+  quoted_args="${quoted_args} \"${s}\""
+done
+
+ssh </dev/null "${REMOTE_HOST}" "cd \"${REMOTE_DIR}\" && ${REMOTE_COMMAND} ${quoted_args}"
 
 ######################################################################
 
 # Disable globbing to keep wildcards for the remote side
 
-echo "xremote: -- retrieve results -----------------------------------------"
+echo "xremote: -- retrieving files -----------------------------------------"
 
 set -f