89 lines
2.0 KiB
Bash
Executable File
89 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# InstallEpics
|
|
#
|
|
# InstallEpics is used within makefiles to copy new versions of
|
|
# files into a destination directory.
|
|
#
|
|
##########################################################
|
|
TOOL=`basename $0`
|
|
MODE=755
|
|
CREATE_DIR=0
|
|
USAGE="Usage:
|
|
$TOOL [ -m mode ] file ... directory
|
|
|
|
-m mode Set the mode for the installed file (0755 by default)
|
|
file Name of file
|
|
directory Destination directory
|
|
"
|
|
# get command line options
|
|
set -- `getopt m:g:o:csd $*`
|
|
for i
|
|
do
|
|
case $i in
|
|
-m) MODE=$2; shift 2;;
|
|
-g | -o) echo "$USAGE"; echo "$i not implemented"; shift 2;;
|
|
-c | -s) echo "$USAGE"; echo "$i not implemented"; shift;;
|
|
-d) CREATE_DIR=1;shift;;
|
|
--) shift; break;;
|
|
esac
|
|
done
|
|
|
|
# at least two args required
|
|
if [ $# -lt 2 ]
|
|
then
|
|
echo "$USAGE"
|
|
exit 1
|
|
fi
|
|
|
|
INSTALL_DIR=
|
|
FILELIST=
|
|
for i
|
|
do
|
|
FILELIST="${FILELIST} ${INSTALL_DIR}"; INSTALL_DIR=$i; shift;
|
|
done
|
|
|
|
if [ ! -d "${INSTALL_DIR}" ] ;then
|
|
if [ "${CREATE_DIR}" ] ;then
|
|
OLDIFS=${IFS}
|
|
IFS=/
|
|
DIRNAME=
|
|
for DIR in ${INSTALL_DIR}
|
|
do
|
|
DIRNAME=${DIRNAME}/${DIR}
|
|
if [ ! -d "${DIRNAME}" ] ;then
|
|
mkdir "${DIRNAME}"
|
|
fi
|
|
done
|
|
IFS=${OLDIFS}
|
|
else
|
|
echo "$USAGE\n Can't find directory '${INSTALL_DIR}'"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
for FILE in ${FILELIST}
|
|
do
|
|
if [ ! -f ${FILE} ] ;then
|
|
echo "$USAGE\n Can't find file '${FILE}'"
|
|
exit 1
|
|
fi
|
|
|
|
TEST=
|
|
FILEBASENAME=`basename ${FILE}`
|
|
if [ -f ${INSTALL_DIR}/${FILEBASENAME} ] ; then
|
|
#Is ${INSTALL_DIR}/${FILEBASENAME} link timestamp newer than ${FILE}
|
|
TEST=`find ${INSTALL_DIR} -name "${FILEBASENAME}" -newer ${FILE} -print`
|
|
fi
|
|
if [ "${TEST}x" = "x" ] ; then
|
|
#echo "Installing ${FILEBASENAME}"
|
|
/bin/rm -f ${INSTALL_DIR}/${FILEBASENAME}
|
|
/bin/cp -p ${FILE} ${INSTALL_DIR}/${FILEBASENAME}
|
|
/bin/chmod ${MODE} ${INSTALL_DIR}/${FILEBASENAME}
|
|
else
|
|
echo "${INSTALL_DIR}/${FILEBASENAME} is up to date"
|
|
fi
|
|
done
|
|
|
|
exit 0
|