commit 43659a89e664fce88544843384a3e3295c2339e7 from: roman zolotarev date: Sun Jan 25 09:58:00 2026 UTC fix: strip trailing slashes in dst directory commit - c12676520bd863358a3144fe479a725afefe80a8 commit + 43659a89e664fce88544843384a3e3295c2339e7 blob - b66ee17b771c09861cc5b9755edd4eac5ffbcfe8 blob + 22a9c210e935bc56366bbe79203865e4858e058c --- ssg.sh +++ ssg.sh @@ -356,12 +356,12 @@ diff_src() { diff_lines "$(cat "$DST/$SSG_SRC")" "$1"; # return files to be updated select_src_files() { + if ! is_dir "$DST"; then mkdir_select_all "$1" && return; fi dst_hash=$(hash_dst) if is_empty "$1"; then clean_up_dst "$src_hash" "$dst_hash" return fi - if ! is_dir "$DST"; then mkdir_select_all "$1" && return; fi if ! is_ssg_src || ! is_ssg_dst; then rmdir_select_all "$1" && return; fi if ! is_matching_ssg_dst "$dst_hash"; then rmdir_select_all "$1" && return; fi src_hash_diff=$(diff_src "$1") @@ -439,7 +439,7 @@ main() { fail_no_src "${@}" SRC=$(cd "$1" && pwd) - DST="$2" + DST="$(dirname "$2")/$(basename "$2")" SITE="$(basename "$SRC")" SSG_IGNORE='.ssg.ignore' SSG_TEMPLATE='.ssg.template' blob - d1c4faa76f3faf760f458410ad8ffd3c2270e806 blob + 07d13294eabbc487918bd8fc6ae56096b486cce0 --- ssg.test.sh +++ ssg.test.sh @@ -143,6 +143,22 @@ ignore a/b/.ssg.ignore ' ;; + select_src_files_trailing_slash) + mkdir "$src" && echo >"$src/t.png" + "$cmd" "$src"/ "$dst"/ 2>&1 | not_ok_diff_n "$1" ' +copy t.png +9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa +' + not_ok_find "$dst" "$1: dst has t.png" ' +.ssg.dst +.ssg.src +t.png +' + cat "$dst/.ssg.dst" | not_ok_diff_n "$1: .ssg.dst" ' +01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b t.png +' + ;; + select_src_files_no_dst) mkdir "$src" && echo >"$src/t.png" "$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1" ' @@ -719,6 +735,7 @@ t fail_no_args t fail_no_src t select_src_files_empty_src t select_src_files_ssg_ignore +t select_src_files_trailing_slash t select_src_files_no_dst t select_src_files_no_ssg_dst_ssg_src t select_src_files_no_dst_ssg_dst_match