瀏覽代碼

Change "./update.sh" to be template-based instead of footer-based

This makes it slightly easier to manage and work with (especially if we want to change the order of things in the future).
Tianon Gravi 11 年之前
父節點
當前提交
5ca166ce66
共有 3 個文件被更改,包括 32 次插入15 次删除
  1. 5 0
      README-template.md
  2. 0 3
      generate-dockerfile-links-partial.sh
  3. 27 12
      update.sh

+ 5 - 0
README-footer.md → README-template.md

@@ -1,3 +1,8 @@
+# Tags and `Dockerfile` links
+
+%%TAGS%%
+
+%%CONTENT%%
 
 # User Feedback
 

+ 0 - 3
generate-dockerfile-links-partial.sh

@@ -26,9 +26,6 @@ for line in "${lines[@]}"; do
 	repoDirTags["$repoDir"]+='`'"$tag"'`'
 done
 
-echo '# Tags and `Dockerfile` links'
-echo
-
 for repoDir in "${repoDirs[@]}"; do
 	if [[ "$repoDir" != *github.com* ]]; then
 		# skip non-github.com for now

+ 27 - 12
update.sh

@@ -9,6 +9,16 @@ if [ ${#repos[@]} -eq 0 ]; then
 fi
 repos=( "${repos[@]%/}" )
 
+replace_field() {
+	repo="$1"
+	field="$2"
+	content="$3"
+	extraSed="${4:-}"
+	sed_escaped_value="$(echo "$content" | sed 's/[\/&]/\\&/g')"
+	sed_escaped_value="${sed_escaped_value//$'\n'/\\n}"
+	sed -ri "s/${extraSed}%%${field}%%${extraSed}/$sed_escaped_value/g" "$repo/README.md"
+}
+
 for repo in "${repos[@]}"; do
 	if [ -x "$repo/update.sh" ]; then
 		( set -x; "$repo/update.sh" )
@@ -28,24 +38,29 @@ for repo in "${repos[@]}"; do
 			;;
 	esac
 	if [ -e "$repo/README-content.md" ]; then
-		mailingList="$(cat "$repo/mailing-list.md" 2>/dev/null |  sed 's/[\/&]/\\&/g' || true)"
+		mailingList="$(cat "$repo/mailing-list.md" 2>/dev/null || true)"
 		if [ "$mailingList" ]; then
 			mailingList=" $mailingList "
 		else
 			mailingList=' '
 		fi
 		
-		(
-			echo "{ ./generate-dockerfile-links-partial.sh $repo && cat $repo/README-content.md README-footer.md; } > $repo/README.md"
-			./generate-dockerfile-links-partial.sh "$repo" > $repo/README.md
-			cat "$repo/README-content.md" "README-footer.md" >> "$repo/README.md"
-			set -x
-			sed -ri '
-				s/\s*%%MAILING_LIST%%\s*/'"$mailingList"'/g;
-				s!%%REPO%%!'"$gitRepo"'!g;
-			' "$repo/README.md"
-		)
+		cp -v README-template.md "$repo/README.md"
+		
+		echo '  TAGS => ./generate-dockerfile-links-partial.sh'
+		replace_field "$repo" 'TAGS' "$(./generate-dockerfile-links-partial.sh "$repo")"
+		
+		echo '  CONTENT => '"$repo"'/README-content.md'
+		replace_field "$repo" 'CONTENT' "$(cat "$repo/README-content.md")"
+		
+		echo '  MAILING_LIST => "'"$mailingList"'"'
+		replace_field "$repo" 'MAILING_LIST' "$mailingList" '\s*'
+		
+		echo '  REPO => "'"$gitRepo"'"'
+		replace_field "$repo" 'REPO' "$gitRepo"
+		
+		echo
 	else
-		echo "skipping $repo: repo/README-content.md"
+		echo >&2 "skipping $repo: missing repo/README-content.md"
 	fi
 done