A simple, powerful task runner inspired by justfile
Project description
RunLy
A simple, powerful task runner inspired by justfile
RunLy is a modern Python task runner that brings the simplicity and power of justfile to Python projects. Define your project tasks in a simple configuration file and run them with a single command.
✨ Features
- 🎯 Simple: Easy-to-understand configuration syntax
- 🔗 Dependencies: Commands can depend on other commands
- 🔧 Variables: Support for variables and environment variables
- 📁 Flexible: Supports both justfile and YAML formats
- 🚀 Fast: Minimal overhead, maximum performance
- 🌐 Cross-platform: Works on Windows, macOS, and Linux
- 🎨 Modern CLI: Beautiful command-line interface with rich output
- 🧪 Well-tested: Comprehensive test suite with high coverage
🚀 Quick Start
Installation
pip install runly
Basic Usage
Create a justfile in your project root:
# Variables
project := "my-app"
version := "1.0.0"
# Default command
test:
echo "Running tests for {{project}}"
pytest tests/
# Build the project
build target="debug":
echo "Building {{project}} v{{version}} in {{target}} mode"
python -m build
# Deploy (depends on build)
deploy env:
just build release
echo "Deploying to {{env}}"
Run your tasks:
# Run the default command
runly
# Run specific commands
runly test
runly build release
runly deploy production
# List available commands
runly --list
YAML Configuration
Alternatively, use YAML format (runly.yml):
variables:
project: my-app
version: 1.0.0
default: test
commands:
test:
script:
- echo "Running tests for {{project}}"
- pytest tests/
description: Run all tests
build:
script: python -m build --{{target}}
args:
- target=debug
description: Build the project
dependencies:
- test
deploy:
script:
- just build release
- echo "Deploying to {{env}}"
args:
- env
description: Deploy to environment
dependencies:
- build
📖 Documentation
- Installation Guide - Detailed installation instructions
- Quick Start - Get up and running quickly
- Configuration - Complete configuration reference
- Command Reference - All available CLI commands
- API Reference - Python API documentation
🎯 Why RunLy?
Before RunLy
# Scattered scripts and commands
python -m pytest tests/
python -m build --wheel
docker build -t myapp:latest .
kubectl apply -f deployment.yaml
python scripts/cleanup.py
After RunLy
# One unified interface
runly test
runly build
runly deploy production
runly cleanup
🔧 Advanced Features
Command Dependencies
deploy: build test
echo "Deploying application"
build:
echo "Building application"
test:
echo "Running tests"
Variable Expansion
name := "myapp"
version := env_var("VERSION", "dev")
build:
docker build -t {{name}}:{{version}} .
deploy env:
docker run {{name}}:{{version}} --env={{env}}
Environment Variables
backup:
aws s3 sync ./data s3://{{env("BACKUP_BUCKET")}}/{{datetime()}}
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
# Clone the repository
git clone https://github.com/kedjar/runly.git
cd runly
# Create virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install in development mode
pip install -e ".[dev,test,docs]"
# Run tests
pytest
# Run linting
black . && isort . && flake8
# Build documentation
cd docs && make html
📋 Requirements
- Python 3.8+
- PyYAML 6.0+
- Click 8.0+ (for enhanced CLI)
- Rich 12.0+ (for beautiful output)
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Inspired by Casey Rodarmor's just
- Built with modern Python practices and tools
- Thanks to all contributors and users
📊 Project Status
RunLy is actively maintained and used in production. We follow Semantic Versioning and maintain backward compatibility.
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file runly-0.1.1.tar.gz.
File metadata
- Download URL: runly-0.1.1.tar.gz
- Upload date:
- Size: 26.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
946bf041dc9674b688ac229e12253ea89fa6e3d37b5a0b2dfcdf9167a863722e
|
|
| MD5 |
9fc5a191de15ea57a0aa58bb996169f0
|
|
| BLAKE2b-256 |
0c67ff07036f66a77819c77f5c194f40d6e89ce8084b8495bc8ed7897110bf51
|
File details
Details for the file runly-0.1.1-py3-none-any.whl.
File metadata
- Download URL: runly-0.1.1-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b28f8c2ec97745b04f7ac51d910998f102b1cdf01eda49cfcd522f4fb290b21
|
|
| MD5 |
accaeeae77f1ba4238e7d65711fda482
|
|
| BLAKE2b-256 |
97a9eac2aff3cd7e551d460a18a290bdda4ab7409e95d90dbf603985e2e3d35c
|