Browse Source

Merge pull request #23 from infosiftr/template

Change "./update.sh" to be template-based instead of footer-based
yosifkit 11 years ago
parent
commit
026febae1c
3 changed files with 32 additions and 15 deletions
  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