tunasync-scripts/docker-ce.sh
2017-08-21 14:38:21 +08:00

53 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# requires: wget, lftp, jq, python3.5, lxml, pyquery
# set -x
set -e
set -u
set -o pipefail
_here=`dirname $(realpath $0)`
GET_FILELIST="${_here}/helpers/docker-ce-filelist.py"
BASE_URL="${TUNASYNC_UPSTREAM_URL:-"https://download.docker.com/linux/"}"
TMP_DIR="${TUNASYNC_WORKING_DIR}/.tmp"
mkdir -p $TMP_DIR
REMOTE_FILELIST="${TUNASYNC_WORKING_DIR}/.filelist.remote"
LOCAL_FILELIST="${TUNASYNC_WORKING_DIR}/.filelist.local"
[[ -f $REMOTE_FILELIST ]] && rm $REMOTE_FILELIST
[[ -f $LOCAL_FILELIST ]] && rm $LOCAL_FILELIST
function cleanup () {
echo "cleaning up"
[[ -d ${TMP_DIR} ]] && {
rm -rf $TMP_DIR
}
[[ -f $REMOTE_FILELIST ]] && rm $REMOTE_FILELIST
[[ -f $LOCAL_FILELIST ]] && rm $LOCAL_FILELIST
}
trap cleanup EXIT
# download
$GET_FILELIST $BASE_URL | while read remote_url; do
dst_rel_file=${remote_url#$BASE_URL}
dst_file="${TUNASYNC_WORKING_DIR}/${dst_rel_file}"
dst_tmp_file="${TMP_DIR}/$(basename ${dst_file})"
echo "${dst_rel_file}" >> $REMOTE_FILELIST
echo "downloading ${remote_url}"
[[ -f ${dst_file} ]] && cp -a ${dst_file} ${dst_tmp_file} || mkdir -p `dirname ${dst_file}`
(cd ${TMP_DIR} && wget -q -N ${remote_url} && mv ${dst_tmp_file} ${dst_file})
done
rm -rf $TMP_DIR
(cd ${TUNASYNC_WORKING_DIR}; find . -type f ) | sed 's+^\./++' > ${LOCAL_FILELIST}
comm <(sort $REMOTE_FILELIST) <(sort $LOCAL_FILELIST) -13 | while read file; do
file="${TUNASYNC_WORKING_DIR}/$file"
echo "deleting ${file}"
[[ -f $file ]] && rm ${file}
done