Skip to content

struktapp/strukt-console

Repository files navigation

Strukt Console

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

This is a console framework that utilises docblock to parse command description and format.

IMPORTANT

This package uses docblock to generate your commands. The docblock must be in single spaces and NOT tabs. Be conservative with the spaces and don't leave any that are unnecessary otherwise the commands will not work.

Usage

Sample Command:

namespace Command;

use Strukt\Console\Input;
use Strukt\Console\Output;

/**
* mysql:auth          MySQL Authentication
* 
* Usage:
*   
*      mysql:auth <database> --username <username> --password <password> [--host <127.0.0.1>]
*
* Arguments:
*
*      database  MySQL database name - optional argument
* 
* Options:
* 
*      --username -u   MySQL Username
*      --password -p   MySQL Password
*      --host -h       MySQL Host - optional default 127.0.0.1
*/
class MySQLAuth extends \Strukt\Console\Command{ 

	public function execute(Input $in, Output $out){

		$out->add(sprintf("%s:%s:%s", 
							$in->get("database"), 
							$in->get("username"), 
							$in->get("password")));
	}
}

Add this in your executable file:

#!/usr/bin/php
<?php
$app = new Strukt\Console\Application("Strukt Console");
$app->add(new Command\MySQLAuth);
$app->run($_SERVER["argv"]);

Call command:

$ php console mysql:auth payroll -u root -p p@55w0rd

Prompt for input and masked input, you may but need not describe promted input in command docblock:

...
//prompt for input
$username = $in->getInput("Username:");
$nickname = $in->getInput("Nickname:");
//masked input
$password = $in->getMaskedInput("Password:");
$cpassword = $in->getMaskedInput("Confirm Password:");
...