Commit Diff


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