readme.test #3
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") | |
| # Get the content of the README file | |
| content=$(cat "./$rel_path") | |
| # Find and process image references | |
| # Look for markdown image syntax:  | |
| image_refs=$(grep -o '!\[.*\](.*\)' "./$rel_path" | sed -E 's/!\[.*\]\((.*)\)/\1/') | |
| # For each image reference | |
| for img_path in $image_refs; do | |
| # Skip URLs | |
| if [[ $img_path == http* ]]; then | |
| continue | |
| fi | |
| # Determine the absolute path of the image | |
| if [[ $img_path == /* ]]; then | |
| # Absolute path within repository | |
| abs_img_path="./$img_path" | |
| else | |
| # Relative path to the README | |
| abs_img_path="$base_dir/$img_path" | |
| fi | |
| # Extract just the filename | |
| img_filename=$(basename "$img_path") | |
| 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 "$abs_img_path" "./wiki/$wiki_img_path" | |
| # Replace the image reference in content | |
| # Escape special characters in the img_path for sed | |
| escaped_img_path=$(echo "$img_path" | sed 's/[\/&]/\\&/g') | |
| escaped_wiki_path=$(echo "$wiki_img_path" | sed 's/[\/&]/\\&/g') | |
| content=$(echo "$content" | sed "s/($escaped_img_path)/($escaped_wiki_path)/g") | |
| else | |
| echo "Warning: Image file not found: $abs_img_path" | |
| fi | |
| done | |
| # Write the updated content to the wiki page | |
| if [ -f "./wiki/$wiki_page" ]; then | |
| # Append to existing page with a section header | |
| echo -e "\n\n## Content from $rel_path\n\n$content" >> "./wiki/$wiki_page" | |
| else | |
| # Create new page | |
| echo -e "# $(basename "$wiki_page" .md)\n\nContent from $rel_path:\n\n$content" > "./wiki/$wiki_page" | |
| fi | |
| fi | |
| done | |
| - name: Commit and Push to Wiki | |
| working-directory: ./wiki | |
| run: | | |
| git add . | |
| git diff-index --quiet HEAD || git commit -m "Sync README files from main repository" | |
| git push |