Commit Diff


commit - 43659a89e664fce88544843384a3e3295c2339e7
commit + a3cde1e1e76b22983723e32ae80fb1120536545f
blob - 22a9c210e935bc56366bbe79203865e4858e058c
blob + b73d135e2c0387c6f52dd1c4577c641789d53657
--- ssg.sh
+++ ssg.sh
@@ -15,7 +15,7 @@
 # other tortious action, arising out of or in connection with the use or
 # performance of this software.
 
-info() { echo "$@" >&2; }
+info() { echo "$@" >&3; }
 fail() { echo "$@" >&2 && exit 1; }
 usage() { fail "usage: ${0##*/} <src> <dst>"; }
 
@@ -431,7 +431,7 @@ generate() {
 write_hashes() {
 	if ! test -d "$DST"; then return; fi
 	echo "$1" >"$DST/$SSG_SRC"
-	echo "$2" | tee "$DST/$SSG_DST" | sha256 >&2
+	echo "$2" | tee "$DST/$SSG_DST" | sha256
 }
 
 main() {
@@ -453,4 +453,4 @@ main() {
 	write_hashes "$src_hash" "$(hash_dst)"
 }
 
-main "${@}"
+main "${@}" 3>&1
blob - 07d13294eabbc487918bd8fc6ae56096b486cce0
blob + 4bc2ed2bf68da7d79ff11ff17a698840135ceb4e
--- ssg.test.sh
+++ ssg.test.sh
@@ -1,7 +1,7 @@
 #!/bin/ksh -e
 
 ok_count=0
-ok_expected=28
+ok_expected=29
 
 plan() {
 	echo "$ok_expected..$ok_count"
@@ -69,7 +69,7 @@ basic_case() {
 if test -z "$1"; then echo "x.txt" && exit; fi
 echo . >"$2/x.txt" && echo "x.txt"
 ' >"$src/.ssg.sh"
-	"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "basic_case" '
+	"$cmd" "$src" "$dst" | not_ok_diff_n "basic_case" '
 ignore    .ssg.ignore
 sh        .ssg.sh > x.txt
 sh        .ssg.sh > x.txt.gz
@@ -131,7 +131,7 @@ c/' >"$src/a/.ssg.ignore"
 		echo >"$src/a/b/3.txt"
 		echo >"$src/a/c/4.txt"
 		echo >"$src/a/c/5.txt"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1" '
 ignore    .ssg.ignore
 ignore    a/.ssg.ignore
 ignore    a/b/.ssg.ignore
@@ -145,7 +145,7 @@ 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" '
+		"$cmd" "$src"/ "$dst"/ | not_ok_diff_n "$1" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
@@ -154,14 +154,14 @@ copy      t.png
 .ssg.src
 t.png
 '
- cat "$dst/.ssg.dst" | not_ok_diff_n "$1: .ssg.dst" '
+		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" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
@@ -174,17 +174,17 @@ t.png
 
 	select_src_files_no_ssg_dst_ssg_src)
 		mkdir "$src" "$dst" && echo >"$src/t.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
 		rm "$dst/.ssg.src"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
 		rm "$dst/.ssg.dst"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: third run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: third run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
@@ -192,12 +192,12 @@ copy      t.png
 
 	select_src_files_no_dst_ssg_dst_match)
 		mkdir "$src" "$dst" && echo >"$src/t.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
 		echo x >>"$dst/.ssg.dst"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
@@ -205,24 +205,24 @@ copy      t.png
 
 	select_src_files_no_src_diff)
 		mkdir "$src" "$dst" && echo >"$src/t.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
 		;;
 
 	select_src_files_clean_dst)
 		mkdir "$src" && echo >"$src/t.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
 		echo >"$dst/trash_file"
 		mkdir "$dst/trash_dir"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 copy      t.png
 9db7b136bc6fdd9c51009ce2f88c69ff64060c3f3ff540a9199f37d2aa404eaa
 '
@@ -237,13 +237,13 @@ t.png
 		mkdir "$src" "$src/dir"
 		echo >"$src/a.png"
 		echo >"$src/dir/b.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 copy      a.png
 copy      dir/b.png
 6e0b941542f81e1b299a21444d0efe2fa224a4220e67df9c37cc34a2c6f01b13
 '
 		rm "$src/dir/b.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 rm        dir/b.png
 rmdir     dir/
 e86615a87eeeae97fb6302dd5013109f0ccfb7336f164a39457e684c30bae90e
@@ -262,7 +262,7 @@ a.png
 		echo '<html>' >"$src/html2.html"
 		echo '# h1' >"$src/markdown.md"
 		echo >"$src/t.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 template  .ssg.template
 html      html1.html, .ssg.template > html1.html
 html      html1.html, .ssg.template > html1.html.gz
@@ -292,7 +292,7 @@ t.png
 		not_ok_find "$dst" "$1" "$expected_dst"
 
 		echo 'x' >"$src/.ssg.template"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 template  .ssg.template
 html      html1.html, .ssg.template > html1.html
 html      html1.html, .ssg.template > html1.html.gz
@@ -305,11 +305,11 @@ cc2f8fab08e743666d490c9379e8580981115d95c3b6492893a46b
 
 	generate_copy)
 		mkdir "$src" "$dst" && echo 'png' >"$src/t.png"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 copy      t.png
 5265fde36fa46d08d2bc48d0f413d41c166ee966a4f94b5fd7ad0c23e1bb92d4
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 5265fde36fa46d08d2bc48d0f413d41c166ee966a4f94b5fd7ad0c23e1bb92d4
 '
 		not_ok_find "$dst" "$1" '
@@ -322,12 +322,12 @@ t.png
 
 	generate_file)
 		mkdir "$src" "$dst" && echo 'txt' >"$src/t.txt"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 file      t.txt
 file      t.txt > t.txt.gz
 482d02d3fdd5ca854ffc9370f9cf3d4efa5bb640713c90dcf5c9800d5acf6812
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 482d02d3fdd5ca854ffc9370f9cf3d4efa5bb640713c90dcf5c9800d5acf6812
 '
 		not_ok_find "$dst" "$1" '
@@ -346,14 +346,14 @@ t.txt.gz
 
 	generate_html)
 		mkdir "$src" "$dst" && echo '<html>' >"$src/h.html"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 html      h.html
 html      h.html > h.html.gz
 sitemap   sitemap.xml
 sitemap   robots.txt
 c31554e49bd5671f634ec9392a21ded395383d00bf224088767fd2fc64a42486
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 c31554e49bd5671f634ec9392a21ded395383d00bf224088767fd2fc64a42486
 '
 		not_ok_find "$dst" "$1" '
@@ -374,7 +374,7 @@ sitemap.xml
 
 	generate_sitemap)
 		mkdir "$src" "$dst" && echo '<html>' >"$src/h.html"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 html      h.html
 html      h.html > h.html.gz
 sitemap   sitemap.xml
@@ -393,7 +393,7 @@ c31554e49bd5671f634ec9392a21ded395383d00bf224088767fd2
 '
 		rm "$src/h.html"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 rm        h.html
 rm        h.html.gz
 rm        robots.txt
@@ -411,7 +411,7 @@ rm        sitemap.xml
 		mkdir "$src" "$dst"
 		echo '<html>' >"$src/h.html"
 		echo >"$src/sitemap.xml"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 html      h.html
 html      h.html > h.html.gz
 file      sitemap.xml
@@ -425,7 +425,7 @@ file      sitemap.xml > sitemap.xml.gz
 		mkdir "$src" "$dst"
 		echo '<html>' >"$src/h.html"
 		echo >"$src/robots.txt"
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 html      h.html
 html      h.html > h.html.gz
 file      robots.txt
@@ -443,7 +443,7 @@ nl</h1>a
 <p>a</p></h>' >"$src/h.html"
 		echo '<title>{{title}}</title>' >"$src/.ssg.template"
 
-		"$cmd" "$src" "$dst" 2>/dev/null
+		"$cmd" "$src" "$dst" >/dev/null
 		cat "$dst/h.html" | not_ok_diff "$1: h.html" "<title>'&rarr; nl</title>"
 		;;
 
@@ -452,7 +452,7 @@ nl</h1>a
 		echo '<h1>x</h1>' >"$src/h.html"
 		echo '<title>{{title}}~{{site}}</title>{{content}}' >"$src/.ssg.template"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 template  .ssg.template
 html      h.html, .ssg.template > h.html
 html      h.html, .ssg.template > h.html.gz
@@ -460,7 +460,7 @@ sitemap   sitemap.xml
 sitemap   robots.txt
 5843646b566cdf923e8cb8745d6e516dc1d764e4af5894a823d6aef45b61f70e
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 5843646b566cdf923e8cb8745d6e516dc1d764e4af5894a823d6aef45b61f70e
 '
 		not_ok_find "$dst" "$1" '
@@ -487,7 +487,7 @@ sitemap.xml
 		echo 'p' >"$src/p.html"
 		echo '<title>{{#title}}{{title}}: {{/title}}{{site}}</title>{{content}}' >"$src/.ssg.template"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 template  .ssg.template
 html      h.html, .ssg.template > h.html
 html      h.html, .ssg.template > h.html.gz
@@ -519,7 +519,7 @@ sitemap.xml
 		echo '/' >"$src/.ssg.template"
 		echo '/dir' >"$src/dir/.ssg.template"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 template  .ssg.template
 template  dir/.ssg.template
 html      dir/h2.html, dir/.ssg.template > dir/h2.html
@@ -530,7 +530,7 @@ sitemap   sitemap.xml
 sitemap   robots.txt
 51147e86d5a634da68279934469c49305735a5a0516b0b6327fb00df86795832
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 51147e86d5a634da68279934469c49305735a5a0516b0b6327fb00df86795832
 '
 		not_ok_find "$dst" "$1" '
@@ -552,14 +552,14 @@ sitemap.xml
 		mkdir "$src" "$dst"
 		echo '<h1>h1</h1>' >"$src/h.html"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 html      h.html
 html      h.html > h.html.gz
 sitemap   sitemap.xml
 sitemap   robots.txt
 52494b82f46c80147bde275b53bf7318998d6986eaf6e503d7fe3dadfdf67d19
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 52494b82f46c80147bde275b53bf7318998d6986eaf6e503d7fe3dadfdf67d19
 '
 		not_ok_find "$dst" "$1" '
@@ -584,7 +584,7 @@ sitemap.xml
 		echo >"$src/h.md"
 		echo >"$src/h.html"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" 2>&1| not_ok_diff_n "$1: first run" '
 html      h.html
 html      h.html > h.html.gz
 fail: h.md collides with h.html
@@ -596,7 +596,7 @@ fail: h.md collides with h.html
 		echo '# h1' >"$src/h.md"
 		echo '<title>{{title}}~{{site}}</title>{{content}}' >"$src/.ssg.template"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 template  .ssg.template
 md        h.md, .ssg.template > h.html
 md        h.md, .ssg.template > h.html.gz
@@ -604,7 +604,7 @@ sitemap   sitemap.xml
 sitemap   robots.txt
 ea62f877148817dcb0bf8b1d76e691880cd58961f239f9e2e25f282c79da26e6
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 ea62f877148817dcb0bf8b1d76e691880cd58961f239f9e2e25f282c79da26e6
 '
 		not_ok_find "$dst" "$1" '
@@ -631,14 +631,14 @@ sitemap.xml
 		mkdir "$src" "$dst"
 		echo '# h1' >"$src/h.md"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 md        h.md > h.html
 md        h.md > h.html.gz
 sitemap   sitemap.xml
 sitemap   robots.txt
 541864f1b492230aa29853b08cf13533054817db9b19bc75ebd47201e04bd470
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 541864f1b492230aa29853b08cf13533054817db9b19bc75ebd47201e04bd470
 '
 		not_ok_find "$dst" "$1" '
@@ -667,12 +667,12 @@ if test -z "$1"; then echo "x.txt" && exit; fi
 echo . >"$2/x.txt" && echo "x.txt"
 ' >"$src/.ssg.sh"
 
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 sh        .ssg.sh > x.txt
 sh        .ssg.sh > x.txt.gz
 99c418b0dcd6c6c2124e87b4857b415bcf0a12ba7c7540d8ac53fe73c2046a29
 '
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: second run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: second run" '
 99c418b0dcd6c6c2124e87b4857b415bcf0a12ba7c7540d8ac53fe73c2046a29
 '
 		not_ok_find "$dst" "$1" '
@@ -708,7 +708,7 @@ fail: .ssg.sh collides with x.txt
 		mkdir "$src"
 		echo >"$src/x.txt"
 		# shellcheck disable=2016
-		"$cmd" "$src" "$dst" 2>&1 | not_ok_diff_n "$1: first run" '
+		"$cmd" "$src" "$dst" | not_ok_diff_n "$1: first run" '
 file      x.txt
 file      x.txt > x.txt.gz
 a12d7b67f235edb37cfcf1bdd5a50a2e0486e1612eda28210b816eaff424a100