Merge pull request #599 from HenryLach/fix/598-resolvepicli-argv1 #1034
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: CI | |
| on: | |
| pull_request: | |
| branches: [main] | |
| push: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| ci: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| cache-dependency-path: | | |
| package-lock.json | |
| extensions/package-lock.json | |
| - name: Install root dev dependencies | |
| run: npm ci | |
| - name: Install extension dependencies | |
| run: npm ci --prefix extensions | |
| - name: Typecheck | |
| run: npm run typecheck | |
| - name: Lint (Biome) | |
| run: npm run lint | |
| - name: Format check (Biome) | |
| run: npm run format:check | |
| - name: Run tests | |
| run: | | |
| cd extensions | |
| # Run tests, excluding platform-specific files that require Windows | |
| # (git worktree operations, Windows drive letter paths) — tracked in issue | |
| node --experimental-strip-types --experimental-test-module-mocks --no-warnings \ | |
| --import ./tests/loader.mjs \ | |
| --test $(ls tests/*.test.ts | grep -v '\.integration\.test\.ts\|execution-path-resolution\|orch-pure-functions\|project-config-loader' | tr '\n' ' ') | |
| - name: CLI smoke checks | |
| run: | | |
| node bin/taskplane.mjs help | |
| node bin/taskplane.mjs version | |
| node bin/taskplane.mjs init --preset full --dry-run --force | |
| node bin/taskplane.mjs uninstall --dry-run --yes | |
| - name: Verify docs relative links | |
| run: | | |
| python - <<'PY' | |
| import re | |
| from pathlib import Path | |
| root = Path('.') | |
| files = [ | |
| p for p in root.rglob('*.md') | |
| if '.git' not in p.parts | |
| and 'node_modules' not in p.parts | |
| and not ('.pi' in p.parts and 'local' in p.parts) | |
| ] | |
| pattern = re.compile(r'\[[^\]]+\]\(([^)]+)\)') | |
| missing = [] | |
| for file in files: | |
| text = file.read_text(encoding='utf-8', errors='ignore') | |
| for link in pattern.findall(text): | |
| if link.startswith(('http://', 'https://', 'mailto:', '#')): | |
| continue | |
| target = (file.parent / link.split('#', 1)[0].split('?', 1)[0]).resolve() | |
| if not target.exists(): | |
| missing.append((file.as_posix(), link)) | |
| if missing: | |
| print(f"Missing links: {len(missing)}") | |
| for file, link in missing: | |
| print(f"{file} -> {link}") | |
| raise SystemExit(1) | |
| print('No missing relative links.') | |
| PY |