Skip to content

Group CLI into single executable with subcommands #38

Group CLI into single executable with subcommands

Group CLI into single executable with subcommands #38

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags:
- "**"
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- uses: pre-commit/action@v3.0.1
with:
extra_args: --files $(git diff origin/main --name-only)
tests:
needs: lint
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest]
python-version: ["3.11"]
install-method: ["mamba", "pip"]
runs-on: ${{ matrix.os }}
defaults:
run:
# We need login shells (-l) for micromamba to work.
shell: bash -leo pipefail {0}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare mamba installation
if: matrix.install-method == 'mamba' && contains(github.event.pull_request.labels.*.name, 'documentation-only') == false
env:
PYTHON_VERSION: ${{ matrix.python-version }}
run: |
# setup correct python version
sed -i -e "s/- python.*/- python=$PYTHON_VERSION/g" environment.yml
- name: mamba setup
if: matrix.install-method == 'mamba' && contains(github.event.pull_request.labels.*.name, 'documentation-only') == false
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment.yml
cache-downloads: true
- name: Python setup
if: matrix.install-method == 'pip' && contains(github.event.pull_request.labels.*.name, 'documentation-only') == false
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- if: matrix.install-method == 'pip' && runner.os == 'macOS' && contains(github.event.pull_request.labels.*.name, 'documentation-only') == false
name: Fix Python PATH on macOS
# See https://github.com/actions/setup-python/issues/132 and
# https://github.com/actions/setup-python/issues/132#issuecomment-779406058
# Login shells on macOS prepend system paths, so we need to
# prepend the python path from actions/setup-python.
# Micromamba sets up ~/.bash_profile, where we need to set the path now.
run: |
tee -a ~/.bash_profile <<<'export PATH="$pythonLocation/bin:$PATH"'
- name: Install dependencies
if: contains(github.event.pull_request.labels.*.name, 'documentation-only') == false
env:
PYTHON_VERSION: ${{ matrix.python-version }}
run: |
python --version | grep "Python ${PYTHON_VERSION}"
# pip install pytest-cov pytest-xdist 'coverage!=6.3.0'
pip install -e .[dev]
pip freeze
- name: Tests
if: contains(github.event.pull_request.labels.*.name, 'documentation-only') == false
run: pytest
docs:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v5.0.0
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install -e .[docs]
- name: Produce Changelog
run: |
towncrier build --yes
- name: Build
run: |
make -C docs html
touch docs/build/html/.nojekyll
- name: Deploy to github pages
# only run on push to main
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
uses: JamesIves/github-pages-deploy-action@v4.5.0
with:
folder: docs/build/html
clean: true
single-commit: true