name: Update Wiki Documentation on: push: branches: - main jobs: generate-docs: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Build Markdown Docs run: | chmod +x gradlew ./gradlew dokkaGfm - name: Sync to Wiki env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_ACTOR: ${{ github.actor }} run: | git config --global user.name "Gitea Bot" git config --global user.email "bot@gitea.io" WIKI_URL="https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@gitea.archvium.eu/KrzysztofC/Retro_HA.wiki.git" # Jeśli repozytorium jest puste, clone może zwrócić błąd, więc robimy fallback git clone "$WIKI_URL" wiki_dir || (mkdir wiki_dir && cd wiki_dir && git init && git remote add origin "$WIKI_URL" && cd ..) # Usuwamy stare pliki (oprócz .git) find wiki_dir -mindepth 1 -maxdepth 1 ! -name '.git' -exec rm -rf {} + # Kopiujemy nowe pliki ze standardowej lokalizacji Dokka MultiModule (jeśli istnieje) # lub z pojedynczych modułów if [ -d "build/dokka/gfm" ]; then cp -r build/dokka/gfm/* wiki_dir/ else # Fallback dla pojedynczych modułów cp -r shared/build/dokka/gfm/* wiki_dir/ 2>/dev/null || true cp -r app/build/dokka/gfm/* wiki_dir/ 2>/dev/null || true fi cd wiki_dir # Gitea Wiki źle radzi sobie z linkami zawierającymi rozszerzenie .md w URL. # Usuwamy .md z linków wewnętrznych za pomocą Perla (pomijamy linki http/https). find . -type f -name "*.md" -exec perl -pi -e 's/\]\((?!http)(.*?)\.md(?:#(.*?))?\)/\]\($1#$2\)/g' {} + # Sprzątanie pustych anchorów (jeśli #$2 było puste, zostaje '#' na końcu, usuwamy to) find . -type f -name "*.md" -exec perl -pi -e 's/#\)/)/g' {} + # Tworzymy statyczną stronę Home.md. # Kopiowanie index.md psuło linki relatywne, więc tworzymy prosty router. echo "# RetroHA Developer Wiki" > Home.md echo "Welcome to the autogenerated API documentation." >> Home.md echo "" >> Home.md if [ -d "shared" ]; then echo "- [Shared Module API Reference](shared/index)" >> Home.md fi if [ -d "app" ]; then echo "- [App Module API Reference](app/index)" >> Home.md fi git add . if ! git diff --cached --quiet; then git commit -m "docs: auto-update wiki from CI/CD" # Wypychamy na gałąź 'main', skoro Gitea ustawiła ją jako domyślną. git branch -M main git push -u origin main --force else echo "No changes to sync." fi