docs: add scripts README with linting documentation
This commit is contained in:
175
scripts/README.md
Normal file
175
scripts/README.md
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
# Scripts Directory
|
||||||
|
|
||||||
|
Utility scripts for development, testing, and maintenance.
|
||||||
|
|
||||||
|
## Available Scripts
|
||||||
|
|
||||||
|
### 🔍 `lint.sh`
|
||||||
|
Unified linting for all project code (Python + TypeScript/Svelte).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/lint.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**What it checks:**
|
||||||
|
- Backend: Ruff (check + format)
|
||||||
|
- Frontend: ESLint, Prettier, TypeScript
|
||||||
|
|
||||||
|
**Auto-enters nix shell if needed**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔧 `install-hooks.sh`
|
||||||
|
Install git hooks for automatic code quality checks.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/install-hooks.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Installs:**
|
||||||
|
- `pre-commit` - Runs linting before each commit
|
||||||
|
- `pre-push` - Runs tests before push
|
||||||
|
|
||||||
|
**Skip hooks:** `git commit --no-verify`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🧪 `test-auth.sh`
|
||||||
|
Automated testing for Phase 3 authentication system.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/test-auth.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tests:**
|
||||||
|
- Health check
|
||||||
|
- User registration
|
||||||
|
- User login
|
||||||
|
- Protected endpoints
|
||||||
|
- Token validation
|
||||||
|
- Password validation
|
||||||
|
- Error handling
|
||||||
|
|
||||||
|
**Requires:** Backend server running on localhost:8000
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🚀 `quick-start.sh`
|
||||||
|
Automated setup for first-time development.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/quick-start.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Does:**
|
||||||
|
- Creates `.env` files
|
||||||
|
- Creates database
|
||||||
|
- Runs migrations
|
||||||
|
- Shows next steps
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Nix Flake Apps
|
||||||
|
|
||||||
|
You can also use nix apps for consistent environment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Lint all code
|
||||||
|
nix run .#lint
|
||||||
|
|
||||||
|
# Auto-fix linting issues
|
||||||
|
nix run .#lint-fix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Git Hooks
|
||||||
|
|
||||||
|
After running `./scripts/install-hooks.sh`:
|
||||||
|
|
||||||
|
**Pre-commit hook:**
|
||||||
|
- Automatically runs on `git commit`
|
||||||
|
- Checks Python (ruff) and TypeScript (ESLint/Prettier)
|
||||||
|
- Prevents commits with linting errors
|
||||||
|
- Skip with: `git commit --no-verify`
|
||||||
|
|
||||||
|
**Pre-push hook:**
|
||||||
|
- Automatically runs on `git push`
|
||||||
|
- Runs full test suite (backend + frontend)
|
||||||
|
- Prevents pushes with failing tests
|
||||||
|
- Skip with: `git push --no-verify`
|
||||||
|
|
||||||
|
## Development Workflow
|
||||||
|
|
||||||
|
### Daily Development
|
||||||
|
```bash
|
||||||
|
# 1. Make changes to code
|
||||||
|
# 2. Lint runs automatically on commit
|
||||||
|
git add .
|
||||||
|
git commit -m "feat: my changes" # Hooks run automatically
|
||||||
|
|
||||||
|
# 3. If lint fails, auto-fix:
|
||||||
|
nix run .#lint-fix
|
||||||
|
# Then commit again
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Checks
|
||||||
|
```bash
|
||||||
|
# Before committing, check manually:
|
||||||
|
./scripts/lint.sh
|
||||||
|
|
||||||
|
# Auto-fix issues:
|
||||||
|
nix run .#lint-fix
|
||||||
|
# OR
|
||||||
|
cd backend && ruff format app/
|
||||||
|
cd frontend && npx prettier --write src/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### "ruff: command not found"
|
||||||
|
**Solution:** Run inside nix shell:
|
||||||
|
```bash
|
||||||
|
nix develop
|
||||||
|
./scripts/lint.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Or the script will auto-enter nix shell for you.
|
||||||
|
|
||||||
|
### "node_modules not found"
|
||||||
|
**Solution:** Install frontend dependencies:
|
||||||
|
```bash
|
||||||
|
cd frontend
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Git hooks not running
|
||||||
|
**Solution:** Reinstall hooks:
|
||||||
|
```bash
|
||||||
|
./scripts/install-hooks.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Want to disable hooks temporarily
|
||||||
|
**Solution:** Use `--no-verify`:
|
||||||
|
```bash
|
||||||
|
git commit --no-verify
|
||||||
|
git push --no-verify
|
||||||
|
```
|
||||||
|
|
||||||
|
## Adding New Linting Rules
|
||||||
|
|
||||||
|
### Backend (Python)
|
||||||
|
Edit `backend/pyproject.toml`:
|
||||||
|
```toml
|
||||||
|
[tool.ruff.lint]
|
||||||
|
select = ["E", "F", "I", "W", "N", "UP", "B", "C4", "SIM"]
|
||||||
|
ignore = ["B008", "N818"] # Add more as needed
|
||||||
|
```
|
||||||
|
|
||||||
|
### Frontend (TypeScript)
|
||||||
|
Edit `frontend/.eslintrc.cjs` and `frontend/.prettierrc`
|
||||||
|
|
||||||
|
## CI/CD Integration
|
||||||
|
|
||||||
|
The linting checks are also run in CI/CD (see `.gitea/workflows/ci.yml`).
|
||||||
|
|
||||||
|
All code must pass linting before merging to main.
|
||||||
|
|
||||||
Reference in New Issue
Block a user