diff --git a/action.yml b/action.yml index 29baecc..c0b8f6d 100644 --- a/action.yml +++ b/action.yml @@ -49,7 +49,11 @@ runs: rm -rf "${DOCUSAURUS_DIR}/docs" cp -r "${{ inputs.docs-path }}" "${DOCUSAURUS_DIR}/docs" cp "${{ github.workspace }}/.docuservix.yml" "${DOCUSAURUS_DIR}" - + + - name: Prepare docs + shell: bash + working-directory: ${{ github.action_path }}/docusaurus + run: node scripts/prepare-docs.mjs - name: Install Docusaurus dependencies shell: bash diff --git a/docusaurus/scripts/prepare-docs.mjs b/docusaurus/scripts/prepare-docs.mjs new file mode 100644 index 0000000..adc0f3a --- /dev/null +++ b/docusaurus/scripts/prepare-docs.mjs @@ -0,0 +1,31 @@ +import fs from 'fs'; +import path from 'path'; + +const docsDir = path.resolve(import.meta.dirname, '..', process.argv[2] || 'docs'); + +/** + * Гарантирует наличие sidebar_position: 0 в front matter файла index.md + */ +function pinIndexToTop() { + const indexPath = path.join(docsDir, 'index.md'); + if (!fs.existsSync(indexPath)) return; + + let content = fs.readFileSync(indexPath, 'utf8'); + + if (content.startsWith('---\n')) { + const endIdx = content.indexOf('\n---\n', 4); + if (endIdx === -1) return; + + const frontMatter = content.slice(4, endIdx); + if (/^sidebar_position\s*:/m.test(frontMatter)) return; + + content = '---\nsidebar_position: 0\n' + frontMatter + '\n---\n' + content.slice(endIdx + 5); + } else { + content = '---\nsidebar_position: 0\n---\n' + content; + } + + fs.writeFileSync(indexPath, content); + console.log('prepare-docs: pinned index.md to sidebar top'); +} + +pinIndexToTop();