| Step | Command Line | Additional Information |
|---|---|---|
| 1. Clone the repository locally. | git clone https://github.com/davidbrownell/FileBackup |
https://git-scm.com/docs/git-clone |
| 2. Install uv. | curl -LsSf https://astral.sh/uv/install.sh | sh on macOS and Linux or powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" on Windows |
https://docs.astral.sh |
| 3. Install dependencies. | uv sync |
https://docs.astral.sh/uv/concepts/projects/sync |
| 4. Install pre-commit hooks | uv run pre-commit install |
https://pre-commit.com/#1-install-pre-commit |
| Activity | Command Line | Description | Used During Local Development | Invoked by Continuous Integration |
|---|---|---|---|---|
| Code Formatting | uv run ruff format oruv run ruff format --check |
Format source code using ruff based on settings in pyproject.toml. |
✅ | ✅ (via pre-commit) |
| Static Code Analysis | uv run ruff check |
Validate source code using ruff based on settings in pyproject.toml. |
✅ | ✅ (via pre-commit) |
| Run pre-commit scripts | uv run pre-commit run |
Run pre-commit scripts based on settings in .pre-commit-config.yaml. |
✅ | ✅ |
| Automated Testing | uv run pytest oruv run pytest --no-cov |
Run automated tests using pytest and extract code coverage using coverage based on settings in pyproject.toml. |
✅ | ✅ |
| Semantic Version Generation | uv run python -m AutoGitSemVer.scripts.UpdatePythonVersion ./pyproject.toml ./src |
Generate a new Semantic Version based on git commits using AutoGitSemVer. Version information is stored in pyproject.toml. |
✅ | |
| Python Package Creation | uv build |
Create a python package using uv based on settings in pyproject.toml. Generated packages will be written to ./dist. |
✅ | |
| Sign Artifacts | uv run python -c "import minisign; minisign.SecretKey.from_file(<temp_filename>).sign_file(<filename>, trusted_comment='<package_name> v<package_version>', drop_signature=True) |
Signs artifacts using py-minisign. Note that the private key is stored as a GitHub secret. | ✅ | |
| Python Package Publishing | uv publish |
Publish a python package to PyPi using uv based on settings in pyproject.toml. |
✅ |
Pull requests are preferred, since they are specific. For more about how to create a pull request, see https://help.github.com/articles/using-pull-requests/.
We recommend creating different branches for different (logical) changes, and creating a pull request into the main branch when you're done. For more information on creating branches, please see https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/.