1. Go to this page and download the library: Download kilylabs/cliframework library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kilylabs / cliframework example snippets
class CommitCommand extends CLIFramework\Command {
public function brief() { return 'brief of bar'; }
public function options($opts) {
$opts->add('C|reuse-message:','Take an existing commit object, and reuse the log message and the authorship information (including the timestamp) when creating the commit.')
->isa('string')
->valueName('commit hash')
// ->validValues([ 'static-50768ab', 'static-c2efdc2', 'static-ed5ba6a', 'static-cf0b1eb'])
->validValues(function() {
$output = array();
exec("git rev-list --abbrev-commit HEAD -n 20", $output);
return $output;
})
;
// Runtime completion by setting up a closure for completion
$opts->add('c|reedit-message:','like -C, but with -c the editor is invoked, so that the user can further edit the commit message.')
->isa('string')
->valueName('commit hash')
->validValues(function() {
// exec("git log -n 10 --pretty=format:%H:%s", $output);
exec("git log -n 10 --pretty=format:%H:%s", $output);
return array_map(function($line) {
list($key,$val) = explode(':',$line);
$val = preg_replace('/\W/',' ', $val);
return array($key, $val);
}, $output);
})
;
$opts->add('author:', 'Override the commit author. Specify an explicit author using the standard A U Thor <[email protected]> format.')
->suggestions(array( 'c9s', 'foo' , 'bar' ))
->valueName('author name')
;
$opts->add('output:', 'Output file')
->isa('file')
;
}
public function arguments($args) {
$args->add('user')
->validValues(['c9s','bar','foo']);
// Static completion result
$args->add('repo')
->validValues(['CLIFramework','GetOptionKit']);
// Add an argument info expecting multiple *.php files
$args->add('file')
->isa('file')
->glob('*.php')
->multiple()
;
}
public function init() {
$this->command('foo'); // register App\Command\FooCommand automatically
$this->command('bar', 'WhatEver\MyCommand\BarCommand');
$this->commandGroup('General Commands', ['foo', 'bar']);
$this->commandGroup('Database Commands', ['create-db', 'drop-db']);
$this->commandGroup('More Commands', [
'foo' => 'WhatEver\MyCommand\FooCommand',
'bar' => 'WhatEver\MyCommand\BarCommand'
]);
}
public function execute($user,$repo) {
$this->logger->notice('executing bar command.');
$this->logger->info('info message');
$this->logger->debug('info message');
$this->logger->write('just write');
$this->logger->writeln('just drop a line');
$this->logger->newline();
return "Return result as an API"; // This can be integrated in your web application
}
}
$input = $this->ask("Your name please");
$input = $this->ask("Your name please", array('John', 'Pedro'));
class ConsoleApp extends CLIFramework\Application
{
const NAME = 'YourApp';
const VERSION = '1.2.1';
}
use CLIFramework\ArgumentEditor\ArgumentEditor;
$editor = new ArgumentEditor(array('./configure','--enable-debug'));
$editor->append('--enable-zip');
$editor->append('--with-sqlite','--with-postgres');
echo $editor;
# ./configure --enable-debug --enable-zip --with-sqlite --with-postgres
$formatter = new CLIFramework\Formatter;
$formatter->format( 'message' , 'green' );