A script runner for the modern age.
Project description
Scrunkly
Scrunkly is a lightweight Python utility for defining and running scripts through a flexible command-line interface. It allows users to organize commonly used scripts into an easily maintainable dictionary, making script execution and management simpler.
Features
- Script Management: Define scripts in a dictionary and run them via command line.
- Sub-Scripts: Chain scripts together and run them in sequence.
- Error Handling: Detect self-referencing scripts and prevent infinite loops.
- Flexible Scripting: Supports both string-based and callable scripts.
Installation
You can install the required dependencies with pipenv
:
pip install scrunkly
Usage
Define your scripts in a dictionary and pass it to scrunkly.scripts
. You can map script names to shell commands or Python functions. Sub-scripts are supported, allowing a script to trigger other scripts in the map.
Here's an example usage:
# run.py
from scrunkly import scripts, py
def get_available_port() -> int:
...
def instructions():
...
scripts({
"api:prod": f"{py} -m uvicorn api:app --host 0.0.0.0 --port {get_available_port()}",
"api:dev": f"{py} -m uvicorn api:app --reload",
"worker": f"{py} worker-runner.py",
"install": f"{py} -m pipenv install",
"mongo:dev": "docker run -d --name api-dev -p 27017:27017 mongo",
"data-import": f"{py} ./scripts/part_data_import.py",
"setup:dev": ["mongo:dev", "data-import", instructions],
})
Running a Script
You can run a script by providing its name as a command-line argument:
python run.py api:dev
This will execute the corresponding script, such as starting the API in development mode using Uvicorn.
Chaining Scripts
You can chain multiple scripts together using a list of script names. For example, the setup:dev
script runs two scripts: mongo:dev
and data-import
:
python run.py setup:dev
Contributing
Feel free to fork this repository and submit pull requests. Contributions are welcome!
License
This project is licensed under the MIT License.
Happy scripting with Scrunkly!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file scrunkly-0.0.2.tar.gz
.
File metadata
- Download URL: scrunkly-0.0.2.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d4bc9ad2a887f28866ae5192ffaf9fdd3ad84d457f5e69cc0924d7ba031977a |
|
MD5 | bc015b5a088c67e5d485faf2d1f8e48d |
|
BLAKE2b-256 | d99c54cc6a135eac2ad381616fd9282a55ee4856401798470067dfb0388eac76 |
File details
Details for the file scrunkly-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: scrunkly-0.0.2-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e2507cad05868540f29e50cfb0746c63db9d28ddd4d2e49dd019ffe582db840 |
|
MD5 | 5cf70f7fabfb6f1b98cd76278b115f66 |
|
BLAKE2b-256 | 61a20ed2d357f288cfa830abd74c441c233839c6ec141889d5b852f240e3f13c |