-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 8d073d5
Showing
14 changed files
with
676 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 2 | ||
updates: | ||
- package-ecosystem: github-actions | ||
directory: / | ||
schedule: | ||
interval: monthly |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- | ||
name: auto-merge | ||
|
||
on: | ||
pull_request_target: | ||
types: | ||
- opened | ||
- reopened | ||
- synchronize | ||
branches: | ||
- main | ||
|
||
jobs: | ||
dependabot: | ||
runs-on: ubuntu-latest | ||
if: ${{ github.actor == 'dependabot[bot]' }} | ||
|
||
steps: | ||
- name: Wait for tests to succeed | ||
uses: lewagon/wait-on-check-action@v1.3.4 | ||
with: | ||
ref: ${{ github.ref }} | ||
check-name: check | ||
wait-interval: 10 | ||
repo-token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Enable auto-merge for Dependabot PRs | ||
run: gh pr merge --auto --squash ${{ github.event.pull_request.html_url }} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
--- | ||
name: test | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
branches: | ||
- main | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | ||
cancel-in-progress: true | ||
|
||
env: | ||
STABLE_PYTHON_VERSION: '3.12' | ||
PYTHONUNBUFFERED: "1" | ||
FORCE_COLOR: "1" | ||
|
||
jobs: | ||
run: | ||
name: Python ${{ matrix.python-version }} on ${{ startsWith(matrix.os, 'macos-') && 'macOS' || startsWith(matrix.os, 'windows-') && 'Windows' || 'Linux' }} | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest, windows-latest, macos-latest] | ||
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Ensure latest pip | ||
run: python -m pip install --upgrade pip | ||
|
||
- name: Install hatch | ||
run: | | ||
pip install hatch | ||
- name: Run static analysis | ||
run: hatch run lint:style | ||
|
||
- name: Run tests | ||
run: hatch run test |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
__pycache__/ | ||
*.py[cod] | ||
*.dll | ||
*.so | ||
*.log | ||
*.swp | ||
/.benchmarks/ | ||
/.cache/ | ||
/.env/ | ||
/.idea/ | ||
/.mypy_cache/ | ||
/.pytest_cache/ | ||
/.ruff_cache/ | ||
/.vscode/ | ||
/backend/dist/ | ||
/dist/ | ||
/site/ | ||
/.coverage* | ||
/coverage.* | ||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2023-present Artem Lykhvar <me@a10r.com> | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
# ppcli | ||
|
||
[![PyPI - Version](https://img.shields.io/pypi/v/ppcli.svg)](https://pypi.org/project/ppcli) | ||
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ppcli.svg)](https://pypi.org/project/ppcli) | ||
|
||
----- | ||
`ppcli` stands for **pyproject CLI**. It is a Python package designed to provide an easy way to specify and manage auxiliary commands within a `pyproject.toml` file for any Python project. | ||
|
||
## Purpose | ||
|
||
The primary purpose of `ppcli` is to allow developers to define and manage common project tasks, such as test, lint, and migration commands, directly within the `pyproject.toml` file. This ensures that all project-specific commands are centralized and easily accessible. | ||
|
||
## Installation | ||
|
||
Install `ppcli` easily using pip: | ||
```console | ||
pip install ppcli | ||
``` | ||
|
||
## Usage | ||
After installing ppcli, you can define your project-specific commands within your pyproject.toml file under the `[tool.ppcli]` section. | ||
|
||
### Example pyproject.toml Configuration | ||
```toml | ||
[tool.ppcli] | ||
lint="black --check --diff ." | ||
fmt="black ." | ||
clean = [ | ||
"find . -type d -name __pycache__ -empty -print0 | xargs --null --no-run-if-empty rmdir", | ||
"coverage erase", | ||
] | ||
test = [ | ||
"clean", | ||
"pytest --cov --blockage -x -s --no-header -ra", | ||
] | ||
``` | ||
### Defining and Combining Commands | ||
* **Single Command**: Each key under [tool.ppcli] represents a command that can be executed. The value can be a single command string or a list of commands. | ||
* **Combined Commands**: Use the keys of other commands to create combined tasks. In the example above, the test command executes the clean command followed by pytest. | ||
* **Environment Variable Substitution**: Include environment variables in your commands using the $VARIABLE_NAME syntax. These will be replaced at runtime with their respective values. Ensure that relevant environment variables are set when running these commands. If a variable is not set, ppcli will raise an error indicating which variable is missing. | ||
|
||
### Running Commands | ||
|
||
To execute the defined commands, simply run the ppcli tool followed by the command name: | ||
|
||
```bash | ||
ppcli <command> | ||
``` | ||
For example: | ||
|
||
```bash | ||
ppcli lint | ||
ppcli fmt | ||
ppcli test | ||
``` | ||
|
||
### Example with Environment Variables | ||
|
||
```toml | ||
[tool.ppcli] | ||
deploy = "scp build/* $DEPLOY_USER@$DEPLOY_HOST:/var/www/app/" | ||
``` | ||
|
||
In this example, ensure that `DEPLOY_USER` and `DEPLOY_HOST` are set in your environment: | ||
|
||
```bash | ||
export DEPLOY_USER=username | ||
export DEPLOY_HOST=example.com | ||
ppcli deploy | ||
``` | ||
|
||
## Contributing | ||
|
||
Contributions are welcome! Please open an issue or a pull request to contribute. | ||
|
||
## License | ||
This project is licensed under the [MIT](https://spdx.org/licenses/MIT.html) License. See the [LICENSE](/LICENSE) file for more details. | ||
|
||
|
Oops, something went wrong.