Browse Source

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 năm trước cách đây
mục cha
commit
5ca166ce66
3 tập tin đã thay đổi với 32 bổ sung15 xóa
  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