#!/bin/bash

## This script simply tars and copies a webobjects bundle to a remote server and sets the permissions.
## It can be used for either an app bundle or split install bundle

# Argument passed in
## Example /Library/WebObjects/Applications/MyApp.woa
WOA_BUNDLE="$1"

## Example xmain2.remote (a ssh config alias in .ssh/config with key authentication)
## This ssh alias must have root access!!
SSH_CONFIG="$2"

## Example /Library/WebObjects/Applications
REMOTE_TARGET_DIR="$3"

## Target CHOWN
TARGET_CHOWN="$4"

## Target CHMOD
TARGET_CHMOD="$5"

USAGE="Usage: $0 /path-to-woa/myapp.woa root@ssh-alias /app/dir/on/remote appserver:appserveradmr 550"

# The script user on this machine needs to have dsa key access to root on target
# and the ssh configuration named here must be defined in script user's .ssh/config file
# Typically the TARGET_CHOWN should be "appserver:appserveradm"


# If arg not supplied, then error
if [ "$WOA_BUNDLE" = "" ]; then
	echo $USAGE
	exit 1
fi

# If arg not supplied, then error
if [ "$SSH_CONFIG" = "" ]; then
	echo $USAGE
	exit 1
fi

# If arg not supplied, then error
if [ "$REMOTE_TARGET_DIR" = "" ]; then
	echo $USAGE
	exit 1
fi

if [ ! -d $WOA_BUNDLE ]; then
	echo "$WOA_BUNDLE does not exist!"
	exit 3
fi

## Remove trailing slashes on directory paths if exists
WOA_BUNDLE=${WOA_BUNDLE%/}
REMOTE_TARGET_DIR=${REMOTE_TARGET_DIR%/}
echo Parameters are
echo "	WOA_BUNDLE = $WOA_BUNDLE"
echo "	SSH_CONFIG = $SSH_CONFIG"
echo "	REMOTE_TARGET_DIR = $REMOTE_TARGET_DIR"

## Save current working directory
CURR_WORKING_DIR=`pwd`
echo "CURR_WORKING_DIR = $CURR_WORKING_DIR"

## Get bundle name itself
WOA_NAME=${WOA_BUNDLE##/*/}
echo "WOA_NAME = $WOA_NAME"
# ALL SYSTEMS GO...

## Get the directory path containing the bundle
WOA_DIR_PATH=${WOA_BUNDLE%/*}
echo "WOA_DIR_PATH = $WOA_DIR_PATH"

## Navigate to bundle dir
echo "cd $WOA_DIR_PATH"
cd $WOA_DIR_PATH

# Create a tar.gz archive of the bundle in /tmp
echo "tar -czf $WOA_NAME.tar.gz $WOA_NAME"
tar -czf $WOA_NAME.tar.gz $WOA_NAME

# ====================================================================
# Copy deployment bundle to each wo-app host and set ownership permissions

# SSH_CONFIG host
echo "scp -Cr $WOA_BUNDLE root@$SSH_CONFIG:$REMOTE_TARGET_DIR/"
scp -r $WOA_BUNDLE.tar.gz root@$SSH_CONFIG:$REMOTE_TARGET_DIR/

# Expand the tar
echo "cd $REMOTE_TARGET_DIR; tar -xzf $WOA_NAME.tar.gz"
ssh root@$SSH_CONFIG "cd $REMOTE_TARGET_DIR; tar -xzf $WOA_NAME.tar.gz"

# Remove tar.gz at destination ... cleanup
ssh root@$SSH_CONFIG "rm $REMOTE_TARGET_DIR/$WOA_NAME.tar.gz"

# Set ownership
echo "$SSH_CONFIG chown -R $TARGET_CHOWN $REMOTE_TARGET_DIR/$WOA_NAME"
ssh root@$SSH_CONFIG "chown -R $TARGET_CHOWN $REMOTE_TARGET_DIR/$WOA_NAME"

# Set permissions
echo "$SSH_CONFIG chmod -R $TARGET_CHMOD $REMOTE_TARGET_DIR/$WOA_NAME"
ssh root@$SSH_CONFIG "chmod -R $TARGET_CHMOD $REMOTE_TARGET_DIR/$WOA_NAME"

cd $CURR_WORKING_DIR

echo "Done deploying $WOA_NAME"
