1. Go to this page and download the library: Download programster/command 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/ */
programster / command example snippets
class DockerEnter extends \Programster\Command\Command
{
/**
* This is your entrypoint for the program when it is being told to execute, and not being
* asked by BASH for tab-completion hints.
* @param array $options - an associative array of option-name/value pairs provided by the user.
* E.g. a user passing --encoding=hevc would turn into ["encoding" => "hevc"]
* @param array $switches - an associative array of switch-name/value pairs provided by the user.
* E.g. a user passing --recursive would turn into ["recursive" => true]
* @param array $args - a collection of arguments passed by the user.
* @return void
*/
public function execute(array $options, array $switches, array $args): void
{
if (count($args) !== 1)
{
throw new Exception("You must pass the ID or name of the container you wish to enter.");
}
$nameOrId = $args[0];
$info = shell_exec("docker ps --format '{{ json .}}'");
$lines = array_filter(explode(PHP_EOL, $info));
$handled = false;
$shell = array_key_exists("shell", $options) ? "/bin/{$options['shell']}" : "/bin/bash";
foreach ($lines as $line)
{
$containerArray = json_decode($line, true);
if ($containerArray['ID'] === $nameOrId)
{
passthru("docker exec -it {$containerArray['ID']} {$shell}");
$handled = true;
break;
}
elseif ($containerArray['Names'] === $nameOrId)
{
passthru("docker exec -it {$containerArray['ID']} {$shell}");
$handled = true;
break;
}
}
if (!$handled)
{
die("There is no container with that ID or name.");
}
}
/**
* Get a list of possible arguments for tab completion. In this case, we want to return a list
* of all the running container names.
* @return array|null - all the hints, or an empty array/null if there are none.
*/
public function getPossibleArgs(): ?array
{
$hints = [];
$info = shell_exec("docker ps --format '{{ json .}}'");
$lines = array_filter(explode(PHP_EOL, $info));
foreach ($lines as $line)
{
$containerArray = json_decode($line, true);
$hints[] = $containerArray['ID'];
$hints[] = $containerArray['Names'];
}
return $hints;
}
/**
* Returns the list of possible options (e.g. --something=value). In this case we allow the
* user to optionally set the shell to "sh" instead of the default of "bash"
* @return CommandOptionCollection|null
*/
public function getOptions(): ?CommandOptionCollection
{
return new CommandOptionCollection(
new BasicCommandOption("shell", "s", ["bash", "sh"])
);
}
/**
* Set the switches (E.G. --something-on). In this case we have none.
* @return CommandSwitchCollection|null
*/
public function getSwitches(): ?CommandSwitchCollection
{
return null;
}
/**
* Get a collection of any possible subcommands. In future we may wrap this DockerEnter
* command within a parent "DockerHelper" command, in which case this would return the
* DockerEnter class inside a collection.
* @return CommandCollection|null
*/
public function getSubCommands(): ?CommandCollection
{
return null;
}
/**
* Get the name of this command, should it ever become a subcommand of another
* command in future.
* @return string
*/
public function getName(): string
{
return "enter";
}
}
// Need to call the command
$command = new DockerHelper();
$command->run();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.