From 67f5fe8b278c3b979990da724c17341af09f96e2 Mon Sep 17 00:00:00 2001 From: Danny Bautista Date: Thu, 20 Jun 2019 09:20:09 -0400 Subject: [PATCH] Handle repositories with names bigger than 100 chars correctly. --- scripts/sync-ebooks | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/scripts/sync-ebooks b/scripts/sync-ebooks index b1d7b39e..631d9e14 100755 --- a/scripts/sync-ebooks +++ b/scripts/sync-ebooks @@ -163,6 +163,14 @@ printf "%s\n" "${repoUrls}" | while IFS= read -r repoUrl; do [ -n "${repoUrl}" ] || continue [ -d "${repoUrl##*/}" ] && continue + repoName="${repoUrl##*/}" + repoNameLength=$(printf "%s" "${repoName}" | wc -m) + if [ "${repoNameLength}" -ge 100 ]; then + if dirs=( "${repoName%%.git}"*/ ) && [[ -d ${dirs[0]} ]]; then + continue + fi + fi + if [ "${verbosity}" -gt 0 ]; then printf "Cloning %s ... \n" "${repoUrl}" fi @@ -173,9 +181,22 @@ printf "%s\n" "${repoUrls}" | while IFS= read -r repoUrl; do git clone -v --bare "${repoUrl}" fi - if ! [ -d "${repoUrl##*/}" ]; then - printf "Failed to clone %s.\n" "${repoUrl##*/}." 1>&2 + if ! [ -d "${repoName}" ]; then + printf "Failed to clone %s.\n" "${repoName}." 1>&2 elif [ "${verbosity}" -gt 0 ]; then printf "Done.\n" fi + + properName="$(git -C "${repoName}" show HEAD:src/epub/content.opf | + grep -oE "url:https://standardebooks.org/ebooks/[^<]+<\/dc:identifier>" | + sed -E "s/<[^>]+?>//g" | + sed -E "s|url:https://standardebooks.org/ebooks/||g" | + sed -E "s|/|_|g").git" + + if [ "${repoUrl##*/}" != "${properName}" ]; then + if [ "${verbosity}" -gt 0 ]; then + printf "Moving %s to %s\n" "${repoName}" "${properName}" + fi + mv "${repoName}" "${properName}" + fi done