diff --git a/.github/actions/base/markdown-check/action.yml b/.github/actions/base/markdown-check/action.yml index cfd2aea..8fdfcb9 100644 --- a/.github/actions/base/markdown-check/action.yml +++ b/.github/actions/base/markdown-check/action.yml @@ -60,10 +60,35 @@ runs: echo "files=${markdown_files[*]}" >> "$GITHUB_OUTPUT" fi - - name: Install rumdl + - name: Detect rumdl in package.json + id: rumdl-deps if: steps.resolved-markdown-files.outputs.any-changed == 'true' shell: bash working-directory: ${{ env.HOLDEX_WORKING_DIR || '.' }} + run: | + if [ -f package.json ] && grep -q '"rumdl"' package.json; then + echo "has-rumdl=true" >> "$GITHUB_OUTPUT" + else + echo "has-rumdl=false" >> "$GITHUB_OUTPUT" + fi + + - name: Install dependencies + if: steps.resolved-markdown-files.outputs.any-changed == 'true' && steps.rumdl-deps.outputs.has-rumdl == 'true' + shell: bash + working-directory: ${{ env.HOLDEX_WORKING_DIR || '.' }} + run: | + if [ "${{ inputs.package-manager }}" = "pnpm" ]; then + pnpm install --frozen-lockfile + elif [ "${{ inputs.package-manager }}" = "npm" ]; then + npm ci + else + bun i --frozen-lockfile + fi + + - name: Install rumdl (fallback) + if: steps.resolved-markdown-files.outputs.any-changed == 'true' && steps.rumdl-deps.outputs.has-rumdl != 'true' + shell: bash + working-directory: ${{ env.HOLDEX_WORKING_DIR || '.' }} run: | if [ "${{ inputs.package-manager }}" = "pnpm" ]; then pnpm add -g rumdl @@ -83,4 +108,16 @@ runs: if: steps.resolved-markdown-files.outputs.any-changed == 'true' shell: bash working-directory: ${{ env.HOLDEX_WORKING_DIR || '.' }} - run: rumdl check --output-format github --fail-on error ${{ steps.resolved-markdown-files.outputs.files }} + run: | + run_rumdl() { + if [ -x "./node_modules/.bin/rumdl" ]; then + ./node_modules/.bin/rumdl "$@" + elif command -v rumdl >/dev/null 2>&1; then + rumdl "$@" + else + echo "::error::rumdl not found locally or globally." >&2 + exit 1 + fi + } + + run_rumdl check --output-format github --fail-on error ${{ steps.resolved-markdown-files.outputs.files }} diff --git a/ACTIONS.md b/ACTIONS.md index 3a7fdd2..d28d0c2 100644 --- a/ACTIONS.md +++ b/ACTIONS.md @@ -80,7 +80,9 @@ Path: `/.github/actions/base/markdown-check` - Discovers changed markdown files (`.md`, `.mdx`) if `changed-files` is not provided. - Filters/uses markdown-only changed files. - Skips execution if no markdown files changed. -- Installs `rumdl` globally using selected package manager. +- If `rumdl` is declared in `package.json`, installs project dependencies with frozen lockfile. +- Otherwise installs `rumdl` globally using selected package manager. +- Uses project-local `rumdl` (`./node_modules/.bin/rumdl`) when available, otherwise global. - Runs `rumdl check --output-format github --fail-on error` on changed markdown files. - Respects `HOLDEX_WORKING_DIR` env var: all steps run in that directory when set.