Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/MrRio/shellwrap
Lovely PHP wrapper for using the command-line
https://github.com/MrRio/shellwrap
Last synced: about 1 month ago
JSON representation
Lovely PHP wrapper for using the command-line
- Host: GitHub
- URL: https://github.com/MrRio/shellwrap
- Owner: MrRio
- License: mit
- Created: 2012-10-13T17:42:22.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2022-11-04T22:32:47.000Z (about 2 years ago)
- Last Synced: 2024-10-16T01:07:56.938Z (about 2 months ago)
- Language: PHP
- Size: 43.9 KB
- Stars: 746
- Watchers: 37
- Forks: 55
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-php - ShellWrap - A simple command line wrapper library. (Table of Contents / Command Line)
- awesome-php-cn - ShellWrap - 一个简单的命令行包装器库. (目录 / 命令行 Command Line)
- awesome-projects - ShellWrap - A simple command line wrapper library. (PHP / Command Line)
- awesome-php - ShellWrap - A simple command line wrapper library. (Table of Contents / Command Line)
README
ShellWrap
==================What is it?
------------------It's a beautiful way to use powerful Linux/Unix tools in PHP. Easily and logically pipe commands together,
capture errors as PHP Exceptions and use a simple yet powerful syntax. Works with any command line tool automagically.Features
------------------* Flexible and sexy syntax.
* Exceptions are thrown if the executable returns an error.
* Paths to binaries are automatically resolved.
* All arguments are properly escaped.
* Callback functions for streaming output.Examples
------------------```php
true
)));// Touch a file to create it
sh::touch('file.html');// Remove file
sh::rm('file.html');// Remove file again (this fails, and throws an exception because the file doesn't exist)
try {
sh::rm('file.html');
} catch (ShellWrapException $e) {
echo 'Caught failing sh::rm() call';
}// This throws an exception, as 'invalidoption' is not a valid argument
try {
echo sh::ls(array('invalidoption' => true));
} catch (ShellWrapException $e) {
echo 'Caught failing sh::ls() call';
}// Commands can be written multiple ways
sh::git('reset', array('hard' => true), 'HEAD');
sh::git('reset', '--hard', 'HEAD');
sh::git(array('reset', '--hard', 'HEAD'));// Arguments passed in are automatically escaped, this expands to
// date --date '2012-10-10 10:00:00'
echo sh::date(array(
'date' => '2012-10-10 10:00:00'
));// If arg keys are one letter, is assumes one dash prefixing it
// date -d '2012-10-10 10:00:00'
echo sh::date(array(
'd' => '2012-10-10 10:00:00'
));?>
```Example: Tailing a file and adding timestamps to output
-------------------------------------------------------You can stream the output of a command into a callback function. For example:
```php
sh::tail('-f log', function($in) {
echo "\033[32m" . date('Y-m-d H:i:s') . "\033[39m " . $in;
});
```Make sure the file 'log' exists. This will output a timestamp, and the input. Try echoing into the log file.
The escape codes are to add a little colour to the terminal.
Interactive Shell
-----------------ShellWrap also ships with an interactive shell mode. You can access this by typing:
```
./bin/shellwrap
```Warning
--------Don't use any user inputted data with these commands. Even with very paranoid filtering, you
can't know all the potential pitfalls of each command you're using. Use your noggin.Acknowledgements
--------------------Inspired by the Python project [sh by Andrew Moffat](http://pypi.python.org/pypi/sh)