update fetching php
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"fabpot/goutte": "^4.0",
|
"fabpot/goutte": "^4.0"
|
||||||
"clio/clio": "^0.1.8"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+1
-46
@@ -4,53 +4,8 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "60aa2585bcce885bae7ab3a59a70ba3f",
|
"content-hash": "7854cb91fa2eeb20d171a6ed16dc50cf",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
|
||||||
"name": "clio/clio",
|
|
||||||
"version": "0.1.8",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/nramenta/clio.git",
|
|
||||||
"reference": "6a9f600b73fa213e817d5c1e67a4641aecd156ef"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/nramenta/clio/zipball/6a9f600b73fa213e817d5c1e67a4641aecd156ef",
|
|
||||||
"reference": "6a9f600b73fa213e817d5c1e67a4641aecd156ef",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.2"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"psr-0": {
|
|
||||||
"Clio": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Nofriandi Ramenta",
|
|
||||||
"email": "nramenta@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Lightweight utility and helper classes for CLI applications",
|
|
||||||
"keywords": [
|
|
||||||
"cli",
|
|
||||||
"console",
|
|
||||||
"daemon"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/nramenta/clio/issues",
|
|
||||||
"source": "https://github.com/nramenta/clio/tree/0.1.8"
|
|
||||||
},
|
|
||||||
"time": "2014-06-22T14:49:41+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "fabpot/goutte",
|
"name": "fabpot/goutte",
|
||||||
"version": "v4.0.3",
|
"version": "v4.0.3",
|
||||||
|
|||||||
+6
-6
@@ -222,13 +222,13 @@ if (!isset($_POST["username"]) || !isset($_POST["password"])) {
|
|||||||
echo create_json_file(get_cal_week(), 0);
|
echo create_json_file(get_cal_week(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_POST["cal_tdy_tmr"]) {
|
#if ($_POST["cal_tdy_tmr"]) {
|
||||||
echo create_json_file(get_cal_tdy_tmr(), 0);
|
# echo create_json_file(get_cal_tdy_tmr(), 0);
|
||||||
}
|
#}
|
||||||
|
|
||||||
if ($_POST["grades"]) {
|
#if ($_POST["grades"]) {
|
||||||
echo create_json_file(get_grades(), 0);
|
# echo create_json_file(get_grades(), 0);
|
||||||
}
|
#}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
Vendored
-22
@@ -1,22 +0,0 @@
|
|||||||
Copyright (c) 2012 Nofriandi Ramenta
|
|
||||||
|
|
||||||
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.
|
|
||||||
Vendored
-279
@@ -1,279 +0,0 @@
|
|||||||
# Clio
|
|
||||||
|
|
||||||
Clio is a lightweight utility and helper classes for CLI applications.
|
|
||||||
It provides colored output, prompts, confirmation inputs, selections, background
|
|
||||||
processes, as well as a way to start and stop daemons.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
The prefered way to install Clio is through [composer][Composer]; the minimum
|
|
||||||
composer.json configuration is:
|
|
||||||
|
|
||||||
```
|
|
||||||
{
|
|
||||||
"require": {
|
|
||||||
"clio/clio": "0.1.8"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
PHP 5.4 is required. This library is developed on and is meant to be used on
|
|
||||||
POSIX systems with the posix, pcntl, and sockets extensions loaded.
|
|
||||||
|
|
||||||
## Console
|
|
||||||
|
|
||||||
The Console class provides helpers for interactive command line input/output.
|
|
||||||
|
|
||||||
### Console::stdin($raw = false)
|
|
||||||
|
|
||||||
Waits for user input. If `$raw` is set to `true`, returns the input without
|
|
||||||
right trimming for `PHP_EOL`.
|
|
||||||
|
|
||||||
### Console::input($prompt = null, $raw = false)
|
|
||||||
|
|
||||||
Asks the user for input which ends when the user types a `PHP_EOL` character.
|
|
||||||
You can optionally provide a prompt string. If `$raw` is set to `true`, returns
|
|
||||||
the input without right trimming for `PHP_EOL`.
|
|
||||||
|
|
||||||
### Console::stdout($text, $raw = false)
|
|
||||||
|
|
||||||
Prints `$text` to STDOUT. The text can contain text color and style specifiers.
|
|
||||||
This method detects whether the text is to be sent out to TTY or to a file
|
|
||||||
through the use of shell redirection and acts accordingly, in the case of the
|
|
||||||
latter, by stripping the text of all color and style specifiers.
|
|
||||||
|
|
||||||
If the second parameter is set to true, then it will print `$text` as is with
|
|
||||||
all text color and style specifiers intact regardless of whether it's printing
|
|
||||||
to TTY or to a file.
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
use Clio\Console;
|
|
||||||
Console::stdout('Hello, World!');
|
|
||||||
```
|
|
||||||
|
|
||||||
### Console::output($text, $raw = false)
|
|
||||||
|
|
||||||
The same as `Console::stdout` except it automatically appends a `PHP_EOL`.
|
|
||||||
|
|
||||||
### Console::stderr($text, $raw = false)
|
|
||||||
|
|
||||||
Behaves like `Console::stdout` except it's for STDERR.
|
|
||||||
|
|
||||||
### Console::error($text, $raw = false)
|
|
||||||
|
|
||||||
The same as `Console::stderr` except it automatically appends a `PHP_EOL`.
|
|
||||||
|
|
||||||
### Console::prompt($text, $options)
|
|
||||||
|
|
||||||
This function prompts the user for input. Several options are available:
|
|
||||||
|
|
||||||
- `required`: True if input is necessary, false otherwise.
|
|
||||||
- `default`: If the user does not provide an input, this is the default value.
|
|
||||||
- `pattern`: Regular expression pattern to match.
|
|
||||||
- `validator`: Callable to validate input. Must return `true` or `false`.
|
|
||||||
- `error`: Default error message.
|
|
||||||
|
|
||||||
If an input error occurs, the prompt will repeat and will keep asking the user
|
|
||||||
for input until it satisfies all the requirements in the `$options` array. Note
|
|
||||||
that if you supply a `default` option, `required` is not enforced.
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
$db_host = Console::prompt('database host', ['default' => 'localhost']);
|
|
||||||
```
|
|
||||||
|
|
||||||
If you provide your own validator callable, you can pass a custom error message
|
|
||||||
to the second parameter:
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
$file = Console::prompt('File', [
|
|
||||||
'required' => true,
|
|
||||||
'validator' => function($input, &$error = null) {
|
|
||||||
if (is_readable($input)) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
$error = 'Path given is not a readable file';
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that for this to work, the second parameter must be declared a reference.
|
|
||||||
|
|
||||||
### Console::confirm($text)
|
|
||||||
|
|
||||||
Asks the user for a simple y/n answer. The answer can be `'y'`, `'n'`, `'Y'`, or
|
|
||||||
`'N'`. Returns either `true` or `false`.
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
$sure = Console::confirm('are you sure?');
|
|
||||||
```
|
|
||||||
|
|
||||||
### Console::select($text, $options)
|
|
||||||
|
|
||||||
Asks the user to choose from a selection of options. The `$options` array is a
|
|
||||||
key-value pairs of input and explanation. The `'?'` input option is appended
|
|
||||||
automatically and it serves as the help option showing all other options along
|
|
||||||
with their respective explanations.
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
$opt = Console::select('apply this patch?',
|
|
||||||
['y' => 'yes', 'n' => 'no', 'a' => 'all']
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
### Console::work(callable $callable)
|
|
||||||
|
|
||||||
Forks another process to run `$callable` in the background while showing status
|
|
||||||
updates to the standard output. By default the status update is a simple spinner
|
|
||||||
which will stop once the `$callable` returns. By providing `$callable` with a
|
|
||||||
`$socket` parameter, the status update is whatever is sent from the background
|
|
||||||
process to the foreground process using the `socket_write()` function:
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
Console::stdout('Working ... ');
|
|
||||||
Console::work(function($socket) { // $socket is optional, defaults to a spinner
|
|
||||||
$n = 100;
|
|
||||||
for ($i = 1; $i <= $n; $i++) {
|
|
||||||
// do whatever it is you need to do
|
|
||||||
socket_write($socket, "[$i/$n]\n");
|
|
||||||
sleep(1); // sleep is good for you
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Console::stdout("%g[DONE]%n\n");
|
|
||||||
```
|
|
||||||
|
|
||||||
Messages sent to the foreground process needs to end with a `"\n"` character.
|
|
||||||
|
|
||||||
### Text color and style specifiers
|
|
||||||
|
|
||||||
You can use text color and style specifiers in the format of `%x` where `x` is
|
|
||||||
the specifier:
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
Console::output('this is %rcolored%n and %Bstyled%n');
|
|
||||||
```
|
|
||||||
|
|
||||||
The `%n` specifier normalizes the color and style of the text to that of the
|
|
||||||
shell's defaults. This specifier is taken from PEAR's Console_Color package.
|
|
||||||
To print a percentage symbol, simply put two `%` characters. The following is
|
|
||||||
the full set of specifiers:
|
|
||||||
|
|
||||||
```
|
|
||||||
text text background
|
|
||||||
------------------------------------------------
|
|
||||||
%k %K %0 black dark grey black
|
|
||||||
%r %R %1 red bold red red
|
|
||||||
%g %G %2 green bold green green
|
|
||||||
%y %Y %3 yellow bold yellow yellow
|
|
||||||
%b %B %4 blue bold blue blue
|
|
||||||
%m %M %5 magenta bold magenta magenta
|
|
||||||
%p %P magenta (think: purple)
|
|
||||||
%c %C %6 cyan bold cyan cyan
|
|
||||||
%w %W %7 white bold white white
|
|
||||||
|
|
||||||
%F Blinking, Flashing
|
|
||||||
%U Underline
|
|
||||||
%8 Reverse
|
|
||||||
%_,%9 Bold
|
|
||||||
|
|
||||||
%n Resets the color
|
|
||||||
%% A single %
|
|
||||||
```
|
|
||||||
|
|
||||||
You can use these specifiers with methods that takes a string and outputs it.
|
|
||||||
|
|
||||||
## Daemon
|
|
||||||
|
|
||||||
The Daemon class provides helpers for starting and killing daemonized processes.
|
|
||||||
|
|
||||||
### Daemon::isRunning($pid)
|
|
||||||
|
|
||||||
Tests if a daemon is currently running or not. Returns true or false:
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
use Clio\Daemon;
|
|
||||||
if (Daemon::isRunning('/path/to/process.pid')) {
|
|
||||||
echo "daemon is running.\n";
|
|
||||||
} else {
|
|
||||||
echo "daemon is not running.\n";
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Daemon::work(array $options, callable $callable)
|
|
||||||
|
|
||||||
Daemonize a `$callable` callable object. The `$options` key-value array must
|
|
||||||
contain `pid` as the path to the PID file:
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
use Clio\Daemon;
|
|
||||||
if (Daemon::isRunning('/path/to/process.pid')) {
|
|
||||||
echo "daemon is already running.\n";
|
|
||||||
} else {
|
|
||||||
Daemon::work(array(
|
|
||||||
'pid' => '/path/to/process.pid', // required
|
|
||||||
'stdin' => '/dev/null', // defaults to /dev/null
|
|
||||||
'stdout' => '/path/to/stdout.txt', // defaults to /dev/null
|
|
||||||
'stderr' => '/path/to/stderr.txt', // defaults to php://stdout
|
|
||||||
),
|
|
||||||
function($stdin, $stdout, $stderr) { // these parameters are optional
|
|
||||||
while (true) {
|
|
||||||
// do whatever it is daemons do
|
|
||||||
sleep(1); // sleep is good for you
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
echo "daemon is now running.\n";
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
The PID file is an ordinary text file with the process ID as its only content.
|
|
||||||
It will be created by the library automatically if it doesn't exist. It is
|
|
||||||
highly recommended to put a call to `sleep` to ease the system load.
|
|
||||||
|
|
||||||
### Daemon::kill($pid, $delete = false)
|
|
||||||
|
|
||||||
Kill a daemonized process:
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
use Clio\Daemon;
|
|
||||||
|
|
||||||
if (Daemon::isRunning('/path/to/process.pid')) {
|
|
||||||
echo "killing running daemon ...\n";
|
|
||||||
if (Daemon::kill('/path/to/process.pid')) {
|
|
||||||
echo "daemon killed.\n";
|
|
||||||
} else {
|
|
||||||
echo "failed killing daemon.\n";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo "nothing to kill.\n";
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
If the second parameter is set to `true`, this function will try to delete the
|
|
||||||
PID file after successfully sending the process a kill signal.
|
|
||||||
|
|
||||||
## Acknowledgments
|
|
||||||
|
|
||||||
The text color and style specifiers are taken entirely from PEAR's Console_Color
|
|
||||||
class by Stefan Walk. The Daemon class is heavily inspired from Andy Thompson's
|
|
||||||
blog post on [daemonizing a PHP CLI script on a POSIX system][post].
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Clio is released under the [MIT License][MIT].
|
|
||||||
|
|
||||||
[Composer]: http://getcomposer.org/
|
|
||||||
[MIT]: http://en.wikipedia.org/wiki/MIT_License
|
|
||||||
[post]: http://andytson.com/blog/2010/05/daemonising-a-php-cli-script-on-a-posix-system/
|
|
||||||
|
|
||||||
-19
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "clio/clio",
|
|
||||||
"description": "Lightweight utility and helper classes for CLI applications",
|
|
||||||
"keywords": ["cli", "console", "daemon"],
|
|
||||||
"type": "library",
|
|
||||||
"license": "MIT",
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Nofriandi Ramenta",
|
|
||||||
"email": "nramenta@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.2"
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-0": {"Clio": "src/"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-476
@@ -1,476 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Clio;
|
|
||||||
|
|
||||||
class Console
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Text foreground colors.
|
|
||||||
*/
|
|
||||||
protected static $FGCOLOR = array(
|
|
||||||
'black' => 30,
|
|
||||||
'red' => 31,
|
|
||||||
'green' => 32,
|
|
||||||
'brown' => 33,
|
|
||||||
'blue' => 34,
|
|
||||||
'purple' => 35,
|
|
||||||
'cyan' => 36,
|
|
||||||
'grey' => 37,
|
|
||||||
'yellow' => 33,
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Text styling.
|
|
||||||
*/
|
|
||||||
protected static $STYLE = array(
|
|
||||||
'normal' => 0,
|
|
||||||
'bold' => 1,
|
|
||||||
'light' => 1,
|
|
||||||
'underscore' => 4,
|
|
||||||
'underline' => 4,
|
|
||||||
'blink' => 5,
|
|
||||||
'inverse' => 6,
|
|
||||||
'hidden' => 8,
|
|
||||||
'concealed' => 8,
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Text background color.
|
|
||||||
*/
|
|
||||||
protected static $BGCOLOR = array(
|
|
||||||
'black' => 40,
|
|
||||||
'red' => 41,
|
|
||||||
'green' => 42,
|
|
||||||
'brown' => 43,
|
|
||||||
'yellow' => 43,
|
|
||||||
'blue' => 44,
|
|
||||||
'purple' => 45,
|
|
||||||
'cyan' => 46,
|
|
||||||
'grey' => 47,
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Color specifier conversion table. Taken from PEAR's Console_Color.
|
|
||||||
*/
|
|
||||||
protected static $CONVERSIONS = array(
|
|
||||||
'%y' => array('yellow', null, null),
|
|
||||||
'%g' => array('green', null, null),
|
|
||||||
'%b' => array('blue', null, null),
|
|
||||||
'%r' => array('red', null, null),
|
|
||||||
'%p' => array('purple', null, null),
|
|
||||||
'%m' => array('purple', null, null),
|
|
||||||
'%c' => array('cyan', null, null),
|
|
||||||
'%w' => array('grey', null, null),
|
|
||||||
'%k' => array('black', null, null),
|
|
||||||
'%n' => array('reset', null, null),
|
|
||||||
'%Y' => array('yellow', 'light', null),
|
|
||||||
'%G' => array('green', 'light', null),
|
|
||||||
'%B' => array('blue', 'light', null),
|
|
||||||
'%R' => array('red', 'light', null),
|
|
||||||
'%P' => array('purple', 'light', null),
|
|
||||||
'%M' => array('purple', 'light', null),
|
|
||||||
'%C' => array('cyan', 'light', null),
|
|
||||||
'%W' => array('grey', 'light', null),
|
|
||||||
'%K' => array('black', 'light', null),
|
|
||||||
'%N' => array('reset', 'light', null),
|
|
||||||
'%3' => array(null, null, 'yellow'),
|
|
||||||
'%2' => array(null, null, 'green'),
|
|
||||||
'%4' => array(null, null, 'blue'),
|
|
||||||
'%1' => array(null, null, 'red'),
|
|
||||||
'%5' => array(null, null, 'purple'),
|
|
||||||
'%6' => array(null, null, 'cyan'),
|
|
||||||
'%7' => array(null, null, 'grey'),
|
|
||||||
'%0' => array(null, null, 'black'),
|
|
||||||
// Don't use this, I can't stand flashing text
|
|
||||||
'%F' => array(null, 'blink', null),
|
|
||||||
'%U' => array(null, 'underline', null),
|
|
||||||
'%8' => array(null, 'inverse', null),
|
|
||||||
'%9' => array(null, 'bold', null),
|
|
||||||
'%_' => array(null, 'bold', null),
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create ANSI-control codes for text foreground and background colors, and
|
|
||||||
* styling.
|
|
||||||
*
|
|
||||||
* @param string $fgcolor Text foreground color
|
|
||||||
* @param string $style Text style
|
|
||||||
* @param string $bgcolor Text background color
|
|
||||||
*
|
|
||||||
* @return string ANSI-control code
|
|
||||||
*/
|
|
||||||
public static function color($fgcolor, $style, $bgcolor)
|
|
||||||
{
|
|
||||||
$code = array();
|
|
||||||
if ($fgcolor == 'reset') {
|
|
||||||
return "\033[0m";
|
|
||||||
}
|
|
||||||
if (isset(static::$FGCOLOR[$fgcolor])) {
|
|
||||||
$code[] = static::$FGCOLOR[$fgcolor];
|
|
||||||
}
|
|
||||||
if (isset(static::$STYLE[$style])) {
|
|
||||||
$code[] = static::$STYLE[$style];
|
|
||||||
}
|
|
||||||
if (isset(static::$BGCOLOR[$bgcolor])) {
|
|
||||||
$code[] = static::$BGCOLOR[$bgcolor];
|
|
||||||
}
|
|
||||||
if (empty($code)) {
|
|
||||||
$code[] = 0;
|
|
||||||
}
|
|
||||||
return "\033[" . implode(';', $code) . 'm';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Taken from PEAR's Console_Color:
|
|
||||||
*
|
|
||||||
* Converts colorcodes in the format %y (for yellow) into ansi-control
|
|
||||||
* codes. The conversion table is: ('bold' meaning 'light' on some
|
|
||||||
* terminals). It's almost the same conversion table irssi uses.
|
|
||||||
* <pre>
|
|
||||||
* text text background
|
|
||||||
* ------------------------------------------------
|
|
||||||
* %k %K %0 black dark grey black
|
|
||||||
* %r %R %1 red bold red red
|
|
||||||
* %g %G %2 green bold green green
|
|
||||||
* %y %Y %3 yellow bold yellow yellow
|
|
||||||
* %b %B %4 blue bold blue blue
|
|
||||||
* %m %M %5 magenta bold magenta magenta
|
|
||||||
* %p %P magenta (think: purple)
|
|
||||||
* %c %C %6 cyan bold cyan cyan
|
|
||||||
* %w %W %7 white bold white white
|
|
||||||
*
|
|
||||||
* %F Blinking, Flashing
|
|
||||||
* %U Underline
|
|
||||||
* %8 Reverse
|
|
||||||
* %_,%9 Bold
|
|
||||||
*
|
|
||||||
* %n Resets the color
|
|
||||||
* %% A single %
|
|
||||||
* </pre>
|
|
||||||
* First param is the string to convert, second is an optional flag if
|
|
||||||
* colors should be used. It defaults to true, if set to false, the
|
|
||||||
* colorcodes will just be removed (And %% will be transformed into %)
|
|
||||||
*
|
|
||||||
* @param string $text String to color
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function colorize($text, $color = true)
|
|
||||||
{
|
|
||||||
$text = str_replace('%%', '% ', $text);
|
|
||||||
foreach (static::$CONVERSIONS as $key => $value) {
|
|
||||||
list($fgcolor, $style, $bgcolor) = $value;
|
|
||||||
$text = str_replace(
|
|
||||||
$key,
|
|
||||||
$color ? static::color($fgcolor, $style, $bgcolor) : '',
|
|
||||||
$text
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return str_replace('% ', '%', $text);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Strips a string from color specifiers.
|
|
||||||
*
|
|
||||||
* @param string $text String to strip
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function decolorize($text)
|
|
||||||
{
|
|
||||||
return static::colorize($text, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Strips a string of ansi-control codes.
|
|
||||||
*
|
|
||||||
* @param string $text String to strip
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function strip($text)
|
|
||||||
{
|
|
||||||
return preg_replace('/\033\[(\d+)(;\d+)*m/', '', $text);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets input from STDIN and returns a string right-trimmed for EOLs.
|
|
||||||
*
|
|
||||||
* @param bool $raw If set to true, returns the raw string without trimming
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function stdin($raw = false)
|
|
||||||
{
|
|
||||||
return $raw ? fgets(STDIN) : rtrim(fgets(STDIN), PHP_EOL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Asks the user for input. Ends when the user types a PHP_EOL. Optionally
|
|
||||||
* provide a prompt.
|
|
||||||
*
|
|
||||||
* @param string $prompt String prompt (optional)
|
|
||||||
* @param bool $raw If set to true, returns the raw string without trimming
|
|
||||||
*
|
|
||||||
* @return string User input
|
|
||||||
*/
|
|
||||||
public static function input($prompt = null, $raw = false)
|
|
||||||
{
|
|
||||||
if (isset($prompt)) {
|
|
||||||
static::stdout($prompt);
|
|
||||||
}
|
|
||||||
return static::stdin($raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints text to STDOUT.
|
|
||||||
*
|
|
||||||
* @param string $text String to write to STDOUT
|
|
||||||
* @param bool $raw Write string as-is; defaults to false
|
|
||||||
*
|
|
||||||
* @return int|false Number of bytes printed or false on error
|
|
||||||
*/
|
|
||||||
public static function stdout($text, $raw = false)
|
|
||||||
{
|
|
||||||
if ($raw) {
|
|
||||||
return fwrite(STDOUT, $text);
|
|
||||||
} elseif (extension_loaded('posix') && posix_isatty(STDOUT)) {
|
|
||||||
return fwrite(STDOUT, static::colorize($text));
|
|
||||||
} else {
|
|
||||||
return fwrite(STDOUT, static::decolorize($text));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints text to STDOUT appended with a PHP_EOL.
|
|
||||||
*
|
|
||||||
* @param string $text String to write to STDOUT
|
|
||||||
* @param bool $raw Write string as-is; defaults to false
|
|
||||||
*
|
|
||||||
* @return int|false Number of bytes printed or false on error
|
|
||||||
*/
|
|
||||||
public static function output($text = null, $raw = false)
|
|
||||||
{
|
|
||||||
return static::stdout($text . PHP_EOL, $raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints text to STDERR.
|
|
||||||
*
|
|
||||||
* @param string $text String to write to STDERR
|
|
||||||
* @param bool $raw Write string as-is; defaults to false
|
|
||||||
*
|
|
||||||
* @return int|false Number of bytes printed or false on error
|
|
||||||
*/
|
|
||||||
public static function stderr($text, $raw = false)
|
|
||||||
{
|
|
||||||
if ($raw) {
|
|
||||||
return fwrite(STDERR, $text);
|
|
||||||
} elseif (extension_loaded('posix') && posix_isatty(STDERR)) {
|
|
||||||
return fwrite(STDERR, static::colorize($text));
|
|
||||||
} else {
|
|
||||||
return fwrite(STDERR, static::decolorize($text));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints text to STDERR appended with a PHP_EOL.
|
|
||||||
*
|
|
||||||
* @param string $text String to write to STDERR
|
|
||||||
* @param bool $raw Write string as-is; defaults to false
|
|
||||||
*
|
|
||||||
* @return int|false Number of bytes printed or false on error
|
|
||||||
*/
|
|
||||||
public static function error($text = null, $raw = false)
|
|
||||||
{
|
|
||||||
return static::stderr($text . PHP_EOL, $raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prompts the user for input
|
|
||||||
*
|
|
||||||
* @param string $text Prompt string
|
|
||||||
* @param array $options Set of options
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function prompt($text, $options = array())
|
|
||||||
{
|
|
||||||
$options = $options + array(
|
|
||||||
'required' => false,
|
|
||||||
'default' => null,
|
|
||||||
'pattern' => null,
|
|
||||||
'validator' => null,
|
|
||||||
'error' => 'Input unacceptable.',
|
|
||||||
);
|
|
||||||
|
|
||||||
top:
|
|
||||||
if ($options['default']) {
|
|
||||||
$input = static::input("$text [" . $options['default'] . ']: ');
|
|
||||||
} else {
|
|
||||||
$input = static::input("$text: ");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strlen($input)) {
|
|
||||||
if (isset($options['default'])) {
|
|
||||||
$input = $options['default'];
|
|
||||||
} elseif ($options['required']) {
|
|
||||||
static::output($options['error']);
|
|
||||||
goto top;
|
|
||||||
}
|
|
||||||
} elseif ($options['pattern'] && !preg_match($options['pattern'], $input)) {
|
|
||||||
static::output($options['error']);
|
|
||||||
goto top;
|
|
||||||
} elseif ($options['validator'] &&
|
|
||||||
!call_user_func_array($options['validator'], array($input, &$error))) {
|
|
||||||
static::output(isset($error) ? $error : $options['error']);
|
|
||||||
goto top;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $input;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Asks the user for a simple yes/no confirmation.
|
|
||||||
*
|
|
||||||
* @param string $text Prompt string
|
|
||||||
*
|
|
||||||
* @return bool Either true or false
|
|
||||||
*/
|
|
||||||
public static function confirm($text)
|
|
||||||
{
|
|
||||||
top:
|
|
||||||
$input = strtolower(static::input("$text [y/n]: "));
|
|
||||||
if (!in_array($input, array('y', 'n'))) goto top;
|
|
||||||
return $input === 'y' ? true : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gives the user an option to choose from. Giving '?' as an input will show
|
|
||||||
* a list of options to choose from and their explanations.
|
|
||||||
*
|
|
||||||
* @param string $text Prompt string
|
|
||||||
* @param array $options Key-value array of options to choose from
|
|
||||||
*
|
|
||||||
* @return string An option character the user chose
|
|
||||||
*/
|
|
||||||
public static function select($text, $options = array())
|
|
||||||
{
|
|
||||||
top:
|
|
||||||
static::stdout("$text [" . implode(',', array_keys($options)) . ",?]: ");
|
|
||||||
$input = static::stdin();
|
|
||||||
if ($input === '?') {
|
|
||||||
foreach ($options as $key => $value) {
|
|
||||||
echo " $key - $value\n";
|
|
||||||
}
|
|
||||||
echo " ? - Show help\n";
|
|
||||||
goto top;
|
|
||||||
} elseif (!in_array($input, array_keys($options))) goto top;
|
|
||||||
return $input;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute a Closure as another process in the background while showing a
|
|
||||||
* status update. The status update can be an indefinite spinner or a string
|
|
||||||
* periodically sent from the background process, depending on whether the
|
|
||||||
* provided Closure object has a $socket parameter or not. Messaging to the
|
|
||||||
* main process is done by socket_* functions. The return value is either
|
|
||||||
* the return value of the background process, or false if the process fork
|
|
||||||
* failed.
|
|
||||||
*
|
|
||||||
* @throws \Exception
|
|
||||||
*
|
|
||||||
* @param callable $callable Closure object
|
|
||||||
*
|
|
||||||
* @return int|false Process exit status
|
|
||||||
*/
|
|
||||||
public static function work(callable $callable)
|
|
||||||
{
|
|
||||||
if (!extension_loaded('pcntl')) {
|
|
||||||
throw new \Exception('pcntl extension required');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!extension_loaded('sockets')) {
|
|
||||||
throw new \Exception('sockets extension required');
|
|
||||||
}
|
|
||||||
|
|
||||||
$spinner = array('|', '/', '-', '\\');
|
|
||||||
$i = 0; $l = count($spinner);
|
|
||||||
$delay = 100000;
|
|
||||||
|
|
||||||
$func = new \ReflectionFunction($callable);
|
|
||||||
|
|
||||||
$socket = (bool)$func->getNumberOfParameters();
|
|
||||||
|
|
||||||
if ($socket) {
|
|
||||||
$sockets = array();
|
|
||||||
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $sockets) === false) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$pid = pcntl_fork();
|
|
||||||
|
|
||||||
if ($pid > 0) {
|
|
||||||
$done = false;
|
|
||||||
$retval = 0;
|
|
||||||
pcntl_signal(SIGCHLD, function() use ($pid, &$done, &$retval) {
|
|
||||||
$child_pid = pcntl_waitpid($pid, $status);
|
|
||||||
if (pcntl_wifexited($status)) {
|
|
||||||
$retval = pcntl_wexitstatus($status);
|
|
||||||
}
|
|
||||||
$done = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
if ($socket) {
|
|
||||||
$text = '';
|
|
||||||
while (!$done) {
|
|
||||||
$r = array($sockets[1]);
|
|
||||||
$w = null;
|
|
||||||
$e = null;
|
|
||||||
if ($status = socket_select($r, $w, $e, 0)) {
|
|
||||||
$data = socket_read($sockets[1], 4096, PHP_NORMAL_READ);
|
|
||||||
if ($data === false) {
|
|
||||||
throw new \Exception(
|
|
||||||
sprintf(
|
|
||||||
'socket write error %s',
|
|
||||||
socket_strerror(socket_last_error($sockets[1]))
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
echo str_repeat(chr(8), strlen($text));
|
|
||||||
$text = rtrim($data, "\n");
|
|
||||||
Console::stdout($text);
|
|
||||||
} else {
|
|
||||||
pcntl_signal_dispatch();
|
|
||||||
}
|
|
||||||
usleep($delay);
|
|
||||||
}
|
|
||||||
echo str_repeat(chr(8), strlen($text));
|
|
||||||
socket_close($sockets[0]);
|
|
||||||
socket_close($sockets[1]);
|
|
||||||
} else {
|
|
||||||
while (!$done) {
|
|
||||||
pcntl_signal_dispatch();
|
|
||||||
echo $spinner[$i];
|
|
||||||
usleep($delay);
|
|
||||||
echo chr(8);
|
|
||||||
$i = $i === $l - 1 ? 0 : $i + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $retval;
|
|
||||||
} elseif ($pid === 0) {
|
|
||||||
if ($socket) {
|
|
||||||
call_user_func($callable, $sockets[0]);
|
|
||||||
} else {
|
|
||||||
call_user_func($callable);
|
|
||||||
}
|
|
||||||
exit;
|
|
||||||
} else {
|
|
||||||
// Unable to fork process.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-156
@@ -1,156 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Clio;
|
|
||||||
|
|
||||||
class Daemon
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Daemonize a Closure object.
|
|
||||||
*
|
|
||||||
* @throws \Exception
|
|
||||||
*
|
|
||||||
* @param array $options Set of options
|
|
||||||
* @param callable $callable Closure object to daemonize
|
|
||||||
*
|
|
||||||
* @return bool True on success, throws an Exception otherwise
|
|
||||||
*/
|
|
||||||
public static function work(array $options, callable $callable)
|
|
||||||
{
|
|
||||||
if (!extension_loaded('pcntl')) {
|
|
||||||
throw new \Exception('pcntl extension required');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!extension_loaded('posix')) {
|
|
||||||
throw new \Exception('posix extension required');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isset($options['pid'])) {
|
|
||||||
throw new \Exception('pid not specified');
|
|
||||||
}
|
|
||||||
|
|
||||||
$options = $options + array(
|
|
||||||
'stdin' => '/dev/null',
|
|
||||||
'stdout' => '/dev/null',
|
|
||||||
'stderr' => 'php://stdout',
|
|
||||||
);
|
|
||||||
|
|
||||||
if (($lock = @fopen($options['pid'], 'c+')) === false) {
|
|
||||||
throw new \Exception('unable to open pid file ' . $options['pid']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!flock($lock, LOCK_EX | LOCK_NB)) {
|
|
||||||
throw new \Exception('could not acquire lock for ' . $options['pid']);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($pid = pcntl_fork()) {
|
|
||||||
case -1:
|
|
||||||
throw new \Exception('unable to fork');
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
fseek($lock, 0);
|
|
||||||
ftruncate($lock, 0);
|
|
||||||
fwrite($lock ,$pid);
|
|
||||||
fflush($lock);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (posix_setsid() === -1) {
|
|
||||||
throw new \Exception('failed to setsid');
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(STDIN);
|
|
||||||
fclose(STDOUT);
|
|
||||||
fclose(STDERR);
|
|
||||||
|
|
||||||
if (!($stdin = fopen($options['stdin'], 'r'))) {
|
|
||||||
throw new \Exception('failed to open STDIN ' . $options['stdin']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!($stdout = fopen($options['stdout'], 'w'))) {
|
|
||||||
throw new \Exception('failed to open STDOUT ' . $options['stdout']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!($stderr = fopen($options['stderr'], 'w'))) {
|
|
||||||
throw new \Exception('failed to open STDERR ' . $options['stderr']);
|
|
||||||
}
|
|
||||||
|
|
||||||
pcntl_signal(SIGTSTP, SIG_IGN);
|
|
||||||
pcntl_signal(SIGTTOU, SIG_IGN);
|
|
||||||
pcntl_signal(SIGTTIN, SIG_IGN);
|
|
||||||
pcntl_signal(SIGHUP, SIG_IGN);
|
|
||||||
|
|
||||||
call_user_func($callable, $stdin, $stdout, $stderr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks whether a daemon process specified by its PID file is running.
|
|
||||||
*
|
|
||||||
* @throws \Exception
|
|
||||||
*
|
|
||||||
* @param string $file Daemon PID file
|
|
||||||
*
|
|
||||||
* @return bool True if the daemon is still running, false otherwise
|
|
||||||
*/
|
|
||||||
public static function isRunning($file)
|
|
||||||
{
|
|
||||||
if (!extension_loaded('posix')) {
|
|
||||||
throw new \Exception('posix extension required');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_readable($file)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (($lock = @fopen($file, 'c+')) === false) {
|
|
||||||
throw new \Exception('unable to open pid file ' . $file);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flock($lock, LOCK_EX | LOCK_NB)) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
flock($lock, LOCK_UN);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Kills a daemon process specified by its PID file.
|
|
||||||
*
|
|
||||||
* @throws \Exception
|
|
||||||
*
|
|
||||||
* @param string $file Daemon PID file
|
|
||||||
* @param bool $delete Flag to delete PID file after killing
|
|
||||||
*
|
|
||||||
* @return bool True on success, false otherwise
|
|
||||||
*/
|
|
||||||
public static function kill($file, $delete = false)
|
|
||||||
{
|
|
||||||
if (!extension_loaded('posix')) {
|
|
||||||
throw new \Exception('posix extension required');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_readable($file)) {
|
|
||||||
throw new \Exception('unreadable pid file ' . $file);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (($lock = @fopen($file, 'c+')) === false) {
|
|
||||||
throw new \Exception('unable to open pid file ' . $file);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flock($lock, LOCK_EX | LOCK_NB)) {
|
|
||||||
flock($lock, LOCK_UN);
|
|
||||||
throw new \Exception('process not running');
|
|
||||||
}
|
|
||||||
|
|
||||||
$pid = fgets($lock);
|
|
||||||
|
|
||||||
if (posix_kill($pid, SIGTERM)) {
|
|
||||||
if ($delete) unlink($file);
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -6,5 +6,4 @@ $vendorDir = dirname(__DIR__);
|
|||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'Clio' => array($vendorDir . '/clio/clio/src'),
|
|
||||||
);
|
);
|
||||||
|
|||||||
-11
@@ -113,16 +113,6 @@ class ComposerStaticInit6f86a52ac31283ed9de8003da3458103
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
public static $prefixesPsr0 = array (
|
|
||||||
'C' =>
|
|
||||||
array (
|
|
||||||
'Clio' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/clio/clio/src',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
public static $classMap = array (
|
public static $classMap = array (
|
||||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||||
'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
|
'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
|
||||||
@@ -133,7 +123,6 @@ class ComposerStaticInit6f86a52ac31283ed9de8003da3458103
|
|||||||
return \Closure::bind(function () use ($loader) {
|
return \Closure::bind(function () use ($loader) {
|
||||||
$loader->prefixLengthsPsr4 = ComposerStaticInit6f86a52ac31283ed9de8003da3458103::$prefixLengthsPsr4;
|
$loader->prefixLengthsPsr4 = ComposerStaticInit6f86a52ac31283ed9de8003da3458103::$prefixLengthsPsr4;
|
||||||
$loader->prefixDirsPsr4 = ComposerStaticInit6f86a52ac31283ed9de8003da3458103::$prefixDirsPsr4;
|
$loader->prefixDirsPsr4 = ComposerStaticInit6f86a52ac31283ed9de8003da3458103::$prefixDirsPsr4;
|
||||||
$loader->prefixesPsr0 = ComposerStaticInit6f86a52ac31283ed9de8003da3458103::$prefixesPsr0;
|
|
||||||
$loader->classMap = ComposerStaticInit6f86a52ac31283ed9de8003da3458103::$classMap;
|
$loader->classMap = ComposerStaticInit6f86a52ac31283ed9de8003da3458103::$classMap;
|
||||||
|
|
||||||
}, null, ClassLoader::class);
|
}, null, ClassLoader::class);
|
||||||
|
|||||||
-48
@@ -1,53 +1,5 @@
|
|||||||
{
|
{
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
|
||||||
"name": "clio/clio",
|
|
||||||
"version": "0.1.8",
|
|
||||||
"version_normalized": "0.1.8.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/nramenta/clio.git",
|
|
||||||
"reference": "6a9f600b73fa213e817d5c1e67a4641aecd156ef"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/nramenta/clio/zipball/6a9f600b73fa213e817d5c1e67a4641aecd156ef",
|
|
||||||
"reference": "6a9f600b73fa213e817d5c1e67a4641aecd156ef",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.2"
|
|
||||||
},
|
|
||||||
"time": "2014-06-22T14:49:41+00:00",
|
|
||||||
"type": "library",
|
|
||||||
"installation-source": "dist",
|
|
||||||
"autoload": {
|
|
||||||
"psr-0": {
|
|
||||||
"Clio": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Nofriandi Ramenta",
|
|
||||||
"email": "nramenta@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Lightweight utility and helper classes for CLI applications",
|
|
||||||
"keywords": [
|
|
||||||
"cli",
|
|
||||||
"console",
|
|
||||||
"daemon"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/nramenta/clio/issues",
|
|
||||||
"source": "https://github.com/nramenta/clio/tree/0.1.8"
|
|
||||||
},
|
|
||||||
"install-path": "../clio/clio"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "fabpot/goutte",
|
"name": "fabpot/goutte",
|
||||||
"version": "v4.0.3",
|
"version": "v4.0.3",
|
||||||
|
|||||||
Vendored
+2
-11
@@ -3,7 +3,7 @@
|
|||||||
'name' => '__root__',
|
'name' => '__root__',
|
||||||
'pretty_version' => 'dev-main',
|
'pretty_version' => 'dev-main',
|
||||||
'version' => 'dev-main',
|
'version' => 'dev-main',
|
||||||
'reference' => '5aff4ac5a61935ccb58762958f7f3a39bf9370f9',
|
'reference' => '263efd5b65eb3add92fd984646c43d19558f3c4e',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -13,21 +13,12 @@
|
|||||||
'__root__' => array(
|
'__root__' => array(
|
||||||
'pretty_version' => 'dev-main',
|
'pretty_version' => 'dev-main',
|
||||||
'version' => 'dev-main',
|
'version' => 'dev-main',
|
||||||
'reference' => '5aff4ac5a61935ccb58762958f7f3a39bf9370f9',
|
'reference' => '263efd5b65eb3add92fd984646c43d19558f3c4e',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'clio/clio' => array(
|
|
||||||
'pretty_version' => '0.1.8',
|
|
||||||
'version' => '0.1.8.0',
|
|
||||||
'reference' => '6a9f600b73fa213e817d5c1e67a4641aecd156ef',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../clio/clio',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'fabpot/goutte' => array(
|
'fabpot/goutte' => array(
|
||||||
'pretty_version' => 'v4.0.3',
|
'pretty_version' => 'v4.0.3',
|
||||||
'version' => '4.0.3.0',
|
'version' => '4.0.3.0',
|
||||||
|
|||||||
Reference in New Issue
Block a user