diff --git a/.github/workflows/update-extensions-in-website.yml b/.github/workflows/update-extensions-in-website.yml new file mode 100644 index 0000000..a1fe517 --- /dev/null +++ b/.github/workflows/update-extensions-in-website.yml @@ -0,0 +1,84 @@ +name: Update latest Extensions documentation in the website + +on: + push: + branches: + - "master" + paths: + - "extensions/*.md" + + +jobs: + Make-PR: + name: Make PR on website repository with updated latest Extensions documentation + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + steps: + - name: Checkout Current repository + uses: actions/checkout@v3 + with: + path: extensions-catalog + - name: Checkout Another repository + uses: actions/checkout@v3 + with: + repository: asyncapi/website + path: website + token: ${{ env.GITHUB_TOKEN }} + - name: Config git + run: | + git config --global user.name asyncapi-bot + git config --global user.email info@asyncapi.io + - name: Create branch + working-directory: ./website + run: | + git checkout -b update-extensions-docs-${{ github.sha }} + - name: Update edit-page-config.json + uses: actions/github-script@v4 + with: + script: | + const { writeFile } = require('fs').promises; + const configPath = './website/config/edit-page-config.json'; + const checkSlug = 'reference/extensions/'; + const slug = { + "value": checkSlug, + "href": "https://github.com/asyncapi/extensions-catalog/tree/master/extensions" + }; + + const configData = require(configPath); + const entryExists = configData.some(entry => entry.value === checkSlug); + if (!entryExists) { + configData.push(slug); + await writeFile(configPath, JSON.stringify(configData, null, 2)) + } + - name: Update title and weight of the markdown files + uses: actions/github-script@v4 + with: + script: | + const fs = require('fs').promises; + const path = require('path'); + const folderPath = './extensions-catalog/extensions'; + const files = await fs.readdir(folderPath); + files.forEach(async (file, ind = 10) => { + const filePath = path.join(folderPath, file); + const baseName = path.basename(filePath, '.md'); + const newData = `---\ntitle: '${baseName}' \nweight: ${ind + 11}\n---\n\n`; + const existingFileData = await fs.readFile(filePath, 'utf8'); + const updatedContent = newData + existingFileData; + await fs.writeFile(filePath, updatedContent); + - name: Copy extensions folder from Current Repo to Another + working-directory: ./website + run: | + mkdir -p ./pages/docs/reference/extensions + printf "%s\ntitle: Extensions\nweight: 10\n%s" "---" "---"> ../extensions-catalog/extensions/_section.md + mv ../extensions-catalog/extensions/*.md ./pages/docs/reference/extensions + - name: Commit and push + working-directory: ./website + run: | + git add . + git commit -m "docs(extension): update latest extensions docs" + git push https://${{ env.GITHUB_TOKEN }}@github.com/asyncapi/website + - name: Create PR + working-directory: ./website + run: | + gh pr create --title "docs(extensions): update latest extensions documentation" --body "Updated extensions documentation is available and this PR introduces update to extensions folder on the website" --head "update-extensions-docs-${{ github.sha }}"