Просмотр исходного кода

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 лет назад
Родитель
Сommit
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