readmd.md update #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Sync README files to Wiki | |
| on: | |
| push: | |
| branches: [ main ] | |
| paths: | |
| - '**/README.md' | |
| - '**/readme.md' | |
| permissions: | |
| contents: write | |
| jobs: | |
| sync-wiki: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Configure Git for Wiki | |
| run: | | |
| git config --global user.name "GitHub Actions" | |
| git config --global user.email "actions@github.com" | |
| - name: Clone Wiki Repository | |
| run: git clone https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.wiki.git ./wiki | |
| - name: Copy README files to Wiki | |
| run: | | |
| # Special mappings - add specific README files to specific wiki pages | |
| declare -A special_mappings | |
| special_mappings["benchmarks/rotatingDrum/readme.md"]="Performance-of-phasicFlow.md" | |
| # Create an images directory in the wiki if it doesn't exist | |
| mkdir -p ./wiki/images | |
| # Process mapped files | |
| for rel_path in "${!special_mappings[@]}"; do | |
| if [ -f "./$rel_path" ]; then | |
| wiki_page="${special_mappings[$rel_path]}" | |
| echo "Processing special mapping: $rel_path -> $wiki_page" | |
| # Get the base directory of the readme file | |
| base_dir=$(dirname "./$rel_path") | |
| # Read content of the README file | |
| content=$(cat "./$rel_path") | |
| # Use grep to identify and process image paths instead of regex | |
| echo "Processing Markdown image references..." | |
| for img_ref in $(grep -o '!\[.*\](.*[^)]*)' "./$rel_path" | sed -E 's/!\[.*\]\((.*)\)/\1/'); do | |
| # Skip URLs | |
| if [[ $img_ref == http* ]]; then | |
| continue | |
| fi | |
| # Process markdown image as before | |
| if [[ $img_ref == /* ]]; then | |
| # Absolute path within repository | |
| abs_img_path="./$img_ref" | |
| else | |
| # Relative path to the README | |
| abs_img_path="$base_dir/$img_ref" | |
| fi | |
| # Extract just the filename | |
| img_filename=$(basename "$img_ref") | |
| wiki_img_path="images/$img_filename" | |
| # Copy the image to wiki repository if it exists | |
| if [ -f "$abs_img_path" ]; then | |
| echo "Copying image: $abs_img_path -> ./wiki/$wiki_img_path" | |
| cp -v "$abs_img_path" "./wiki/$wiki_img_path" || echo "Error copying image" | |
| # Escape special characters in the path for sed | |
| escaped_img_path=$(echo "$img_ref" | sed 's/[\/&]/\\&/g') | |
| # Replace the image reference in content - simpler approach with sed | |
| content=$(echo "$content" | sed "s|!\\[.*\\]($escaped_img_path)||g") | |
| echo "Replaced image reference: $img_ref → $wiki_img_path" | |
| else | |
| echo "Warning: Image file not found: $abs_img_path" | |
| # Add more debug info | |
| echo "Current directory: $(pwd)" | |
| echo "Files in $base_dir:" | |
| ls -la "$base_dir" | |
| fi | |
| done | |
| # Process HTML img tags separately - preserving all attributes | |
| echo "Processing HTML image references..." | |
| # Store the file content in a temporary variable to process with awk | |
| readme_content=$(cat "./$rel_path") | |
| # Use awk to find all img tags and process them | |
| img_tags=$(echo "$readme_content" | grep -o '<img[^>]*>' || echo "") | |
| if [ -n "$img_tags" ]; then | |
| echo "Found HTML img tags to process" | |
| echo "$img_tags" | while read -r img_tag; do | |
| # Extract src attribute | |
| img_src=$(echo "$img_tag" | grep -o 'src="[^"]*"' | sed 's/src="\([^"]*\)"/\1/') | |
| # Skip if no src or if it's a URL | |
| if [ -z "$img_src" ] || [[ $img_src == http* ]]; then | |
| continue | |
| fi | |
| # Determine the absolute path of the image | |
| if [[ $img_src == /* ]]; then | |
| # Absolute path within repository | |
| abs_img_path="./$img_src" | |
| else | |
| # Relative path to the README | |
| abs_img_path="$base_dir/$img_src" | |
| fi | |
| # Extract just the filename | |
| img_filename=$(basename "$img_src") | |
| wiki_img_path="images/$img_filename" | |
| # Copy the image to wiki repository if it exists | |
| if [ -f "$abs_img_path" ]; then | |
| echo "Copying image: $abs_img_path -> ./wiki/$wiki_img_path" | |
| cp -v "$abs_img_path" "./wiki/$wiki_img_path" || echo "Error copying image" | |
| # Escape special characters in the path for sed | |
| escaped_img_src=$(echo "$img_src" | sed 's/[\/&]/\\&/g') | |
| escaped_img_tag=$(echo "$img_tag" | sed 's/[\/&]/\\&/g') | |
| # Create the new tag with the updated src but preserving all other attributes | |
| new_img_tag=$(echo "$img_tag" | sed "s|src=\"$escaped_img_src\"|src=\"$wiki_img_path\"|g") | |
| # Replace the entire img tag in content | |
| content=$(echo "$content" | sed "s|$escaped_img_tag|$new_img_tag|g") | |
| echo "Replaced HTML image tag while preserving all attributes" | |
| else | |
| echo "Warning: HTML image file not found: $abs_img_path" | |
| # Add more debug info | |
| echo "Current directory: $(pwd)" | |
| echo "Files in $base_dir:" | |
| ls -la "$base_dir" | |
| fi | |
| done | |
| fi | |
| # Debug output | |
| echo "Wiki page content preview (first 100 chars): ${content:0:100}" | |
| # Replace the wiki page with the updated content rather than appending | |
| mkdir -p "$(dirname "./wiki/$wiki_page")" # Ensure directory exists | |
| echo -e "# $(basename "$wiki_page" .md)\n\n$content" > "./wiki/$wiki_page" | |
| echo "Updated wiki page: $wiki_page" | |
| fi | |
| done | |
| - name: Commit and Push to Wiki | |
| working-directory: ./wiki | |
| run: | | |
| echo "Files changed in wiki repository:" | |
| git status | |
| git add . | |
| git diff-index --quiet HEAD || git commit -m "Sync README files from main repository" | |
| git push || { echo "Push failed, retrying with more details..."; git push --verbose; } |