build: revamp cli package #60
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: CLI Lint & Test | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- 'cli/**' | |
pull_request: | |
branches: | |
- main | |
paths: | |
- 'cli/**' | |
permissions: | |
contents: read | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
env: | |
working-directory: "./cli" | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v5 | |
- name: Install uv | |
working-directory: ${{env.working-directory}} | |
run: | |
curl -LsSf https://astral.sh/uv/0.9.2/install.sh | sh | |
- name: Install venv (dependencies + app) | |
working-directory: ${{env.working-directory}} | |
run: uv sync --frozen --group dev | |
- name: Run Black (Code Formatter Check) | |
working-directory: ${{env.working-directory}} | |
run: | | |
uv run black --check --diff ./ | |
- name: Run isort (Import Sorting Check) | |
working-directory: ${{env.working-directory}} | |
run: | | |
uv run isort --check-only --diff ./ | |
- name: Run Flake8 (Linting) | |
working-directory: ${{env.working-directory}} | |
run: | | |
uv run flake8 ./ --count --select=E9,F63,F7,F82 --show-source --statistics | |
uv run flake8 ./ --count --exit-zero --max-complexity=10 --max-line-length=88 --statistics | |
- name: Run Static Checks | |
working-directory: ${{env.working-directory}} | |
run: | | |
uv run mypy ./ --ignore-missing-imports || true | |
- name: Test CLI Installation | |
working-directory: ${{env.working-directory}} | |
run: | | |
# Test CLI commands work | |
uv run cli.py --help | |
uv run cli.py hello greet --help | |
test: | |
runs-on: ubuntu-latest | |
env: | |
working-directory: "./cli" | |
needs: lint | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v5 | |
- name: Install uv | |
working-directory: ${{env.working-directory}} | |
run: | |
curl -LsSf https://astral.sh/uv/0.9.2/install.sh | sh | |
- name: Install venv (dependencies + app) | |
working-directory: ${{env.working-directory}} | |
run: uv sync --frozen --group dev | |
- name: Run Tests | |
working-directory: ${{env.working-directory}} | |
run: | | |
# Run tests if they exist | |
if [ -f test_*.py ] || [ -f *_test.py ] || [ -d tests ]; then | |
uv run pytest --cov=. --cov-report=term-missing | |
else | |
echo "No tests found, running basic smoke test" | |
uv run cli.py --help | |
fi |