mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-13 11:41:31 +00:00
The latest images incorporate all changes previously added by the dockerfiles. The arm image however is still missing/unreliable from the registry and must be built independently.
149 lines
3.7 KiB
PHP
149 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace Nwidart\Modules\Commands;
|
|
|
|
use Illuminate\Console\Command;
|
|
use Nwidart\Modules\Json;
|
|
use Nwidart\Modules\Process\Installer;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
|
|
class InstallCommand extends Command
|
|
{
|
|
/**
|
|
* The console command name.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $name = 'module:install';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Install the specified module by given package name (vendor/name).';
|
|
|
|
/**
|
|
* Create a new command instance.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*/
|
|
public function handle(): int
|
|
{
|
|
if (is_null($this->argument('name'))) {
|
|
return $this->installFromFile();
|
|
}
|
|
|
|
$this->install(
|
|
$this->argument('name'),
|
|
$this->argument('version'),
|
|
$this->option('type'),
|
|
$this->option('tree')
|
|
);
|
|
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Install modules from modules.json file.
|
|
*/
|
|
protected function installFromFile(): int
|
|
{
|
|
if (!file_exists($path = base_path('modules.json'))) {
|
|
$this->error("File 'modules.json' does not exist in your project root.");
|
|
|
|
return E_ERROR;
|
|
}
|
|
|
|
$modules = Json::make($path);
|
|
|
|
$dependencies = $modules->get('require', []);
|
|
|
|
foreach ($dependencies as $module) {
|
|
$module = collect($module);
|
|
|
|
$this->install(
|
|
$module->get('name'),
|
|
$module->get('version'),
|
|
$module->get('type')
|
|
);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Install the specified module.
|
|
*
|
|
* @param string $name
|
|
* @param string $version
|
|
* @param string $type
|
|
* @param bool $tree
|
|
*/
|
|
protected function install($name, $version = 'dev-master', $type = 'composer', $tree = false)
|
|
{
|
|
$installer = new Installer(
|
|
$name,
|
|
$version,
|
|
$type ?: $this->option('type'),
|
|
$tree ?: $this->option('tree')
|
|
);
|
|
|
|
$installer->setRepository($this->laravel['modules']);
|
|
|
|
$installer->setConsole($this);
|
|
|
|
if ($timeout = $this->option('timeout')) {
|
|
$installer->setTimeout($timeout);
|
|
}
|
|
|
|
if ($path = $this->option('path')) {
|
|
$installer->setPath($path);
|
|
}
|
|
|
|
$installer->run();
|
|
|
|
if (!$this->option('no-update')) {
|
|
$this->call('module:update', [
|
|
'module' => $installer->getModuleName(),
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the console command arguments.
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function getArguments()
|
|
{
|
|
return [
|
|
['name', InputArgument::OPTIONAL, 'The name of module will be installed.'],
|
|
['version', InputArgument::OPTIONAL, 'The version of module will be installed.'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Get the console command options.
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function getOptions()
|
|
{
|
|
return [
|
|
['timeout', null, InputOption::VALUE_OPTIONAL, 'The process timeout.', null],
|
|
['path', null, InputOption::VALUE_OPTIONAL, 'The installation path.', null],
|
|
['type', null, InputOption::VALUE_OPTIONAL, 'The type of installation.', null],
|
|
['tree', null, InputOption::VALUE_NONE, 'Install the module as a git subtree', null],
|
|
['no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies.', null],
|
|
];
|
|
}
|
|
}
|