#!/bin/sh base_dir=$(dirname "$(readlink -f "$0")") if [ ! -s "${base_dir}/work/wish-list" ]; then exit fi while read -r type source_base64; do if [ -d "${base_dir}/work/repositories/${source_base64}" ]; then continue fi source=$( printf '%s' "${source_base64}" | \ base64 -d ) case "${type}" in 'git') mkdir -p "${base_dir}/work/repositories/git" git -C "${base_dir}/work/repositories/git" clone --mirror "${source}" "${source_base64}" ;; 'hg') mkdir -p "${base_dir}/work/repositories/hg" echo hg -y --cwd "${base_dir}/work/repositories/hg" clone "${source}" "${source_base64}" hg -y --cwd "${base_dir}/work/repositories/hg" clone "${source}" "${source_base64}" ;; *) >&2 printf 'unknown type "%s"\n' \ "${type}" ;; esac done < \ "${base_dir}/work/wish-list" grep -vxF "$( find "${base_dir}/work/repositories" -mindepth 2 -maxdepth 2 | \ sed 's,^.*/\([^/]\+\)/\([^/]\+\)$,\1 \2,' )" "${base_dir}/work/wish-list" | \ sponge "${base_dir}/work/wish-list"