66 lines
2.0 KiB
YAML
66 lines
2.0 KiB
YAML
name: repo-sanity
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- main
|
|
- codex
|
|
- opencode
|
|
|
|
jobs:
|
|
repo-sanity:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Check tracked top-level docs for obvious machine-specific paths
|
|
run: |
|
|
set -euo pipefail
|
|
python3 - <<'PY'
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
tracked = subprocess.check_output(['git', 'ls-files'], text=True).splitlines()
|
|
allowed = {
|
|
'README.md', 'README.zh-CN.md', 'README.ja-JP.md',
|
|
'CLAUDE.md', 'CLAUDE.zh-CN.md', 'CLAUDE.ja-JP.md',
|
|
'AGENTS.md',
|
|
'MCP_SETUP.md', 'MCP_SETUP.zh-CN.md', 'MCP_SETUP.ja-JP.md',
|
|
'OBSIDIAN_SETUP.md', 'OBSIDIAN_SETUP.zh-CN.md', 'OBSIDIAN_SETUP.ja-JP.md',
|
|
'settings.json.template',
|
|
'.github/PULL_REQUEST_TEMPLATE.md',
|
|
'.github/ISSUE_TEMPLATE/bug_report.yml',
|
|
'.github/ISSUE_TEMPLATE/workflow_gap.yml',
|
|
'.github/ISSUE_TEMPLATE/docs_problem.yml',
|
|
'.github/ISSUE_TEMPLATE/config.yml',
|
|
}
|
|
pattern = re.compile(r'/Users/[A-Za-z0-9_.-]+|/home/[A-Za-z0-9_.-]+|[A-Za-z]:\\Users\\[A-Za-z0-9_. -]+')
|
|
bad = []
|
|
for rel in tracked:
|
|
if rel not in allowed:
|
|
continue
|
|
try:
|
|
text = Path(rel).read_text(encoding='utf-8')
|
|
except Exception:
|
|
continue
|
|
if pattern.search(text):
|
|
bad.append(rel)
|
|
if bad:
|
|
print('Found machine-specific paths in:')
|
|
for rel in bad:
|
|
print(rel)
|
|
sys.exit(1)
|
|
PY
|
|
|
|
- name: Check tracked junk files
|
|
run: |
|
|
set -euo pipefail
|
|
if git ls-files | rg '(^|/)(\.DS_Store|Thumbs\.db|desktop\.ini)$'; then
|
|
echo "Tracked junk files detected."
|
|
exit 1
|
|
fi
|