mirror of
https://github.com/kennethreitz/kennethreitz.org.git
synced 2026-06-05 22:50:17 +00:00
57 lines
2.3 KiB
Markdown
57 lines
2.3 KiB
Markdown
# delegator
|
||
|
||
Delegator is a Python library that allows you to define and execute shell commands in a more readable and maintainable way. It is a wrapper around the `subprocess` module and provides a more high-level interface for running shell commands.
|
||
|
||
## Key Features
|
||
|
||
- **Simplified API:** Delegator abstracts away the complexity of the `subprocess` module and provides a more user-friendly API for executing shell commands.
|
||
- **Command Chaining:** You can chain multiple commands together using the `|` operator, similar to how you would in a shell script.
|
||
- **Output Handling:** Delegator provides methods for capturing and processing the output of shell commands, making it easy to work with the results.
|
||
- **Error Handling:** You can easily handle errors and exceptions that occur during command execution, allowing you to build robust shell scripts.
|
||
- **Cross-Platform:** Delegator works on all major platforms, including Windows, macOS, and Linux, making it a versatile tool for shell scripting.
|
||
|
||
## Installation
|
||
|
||
You can install Delegator using `uv` or `pip`:
|
||
|
||
```bash
|
||
$ uv pip install delegator.py
|
||
```
|
||
|
||
## Usage
|
||
|
||
Here's a simple example of how you can use Delegator to run a shell command:
|
||
|
||
```python
|
||
import delegator
|
||
|
||
c = delegator.run('ls -l')
|
||
print(c.out)
|
||
```
|
||
|
||
In this example, we use the `run` function to execute the `ls -l` command and print the output to the console.
|
||
|
||
## Command Chaining
|
||
|
||
Delegator allows you to chain multiple commands together using the `|` operator. Here's an example:
|
||
|
||
```python
|
||
import delegator
|
||
|
||
c = delegator.chain('ls -l | grep .py')
|
||
print(c.out)
|
||
```
|
||
|
||
In this example, we use the `chain` function to run the `ls -l | grep .py` command, which lists all Python files in the current directory.
|
||
|
||
## Predecessor — Envoy
|
||
|
||
`envoy` is a similar library that provides a high-level interface for subprocess management in Python. Delegator is a more modern and feature-rich alternative to Envoy, with additional functionality and improved performance. It has also been battle–tested in production environments and is used by [pipenv](/software/pipenv.md) for shell command execution.
|
||
|
||
## Read More
|
||
|
||
The project was gifted to [Amit Tripathi](https://github.com/amitt001) and is available on GitHub:
|
||
|
||
- https://github.com/amitt001/delegator.py
|
||
- https://github.com/not-kennethreitz/envoy
|