1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#!/bin/sh
set -e
STATE="$1"
FILES="$2"
prev_files_tar="$FILES"/tmp/prev_files.tar
update_files_tar="$FILES"/files/update.tar
dest_dir_file="$FILES"/files/dest_dir
case "$STATE" in
NeedsArtifactReboot)
echo "No"
;;
SupportsRollback)
echo "Yes"
;;
ArtifactInstall)
dest_dir=$(cat $dest_dir_file)
test -z "$dest_dir" && \
echo "Fatal error: dest_dir is undefined." && exit 1
test "$dest_dir" = "/" && \
echo "Error: destination dir is '/', install not supported." && exit 1
mkdir -p $dest_dir
if ! tar -cf ${prev_files_tar} -C ${dest_dir} .
then
ret=$?
# Make sure there is no half-backup lying around.
rm -f ${prev_files_tar}
exit $ret
fi
rm -rf ${dest_dir}
mkdir -p ${dest_dir}
tar -xf ${update_files_tar} -C ${dest_dir}
;;
ArtifactRollback)
test -f $prev_files_tar || exit 0
dest_dir=$(cat $dest_dir_file)
test -z "$dest_dir" && \
echo "Fatal error: dest_dir is undefined." && exit 1
test "$dest_dir" = "/" && \
echo "Info: destination dir is '/', not performing rollback." && exit 0
rm -rf ${dest_dir}
mkdir -p ${dest_dir}
tar -xf ${prev_files_tar} -C ${dest_dir}
;;
esac
exit 0
|