mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-12 11:11:31 +00:00
update dockerfiles based on latest streamline image
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.
This commit is contained in:
+143
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
|
||||
namespace Nwidart\Modules\Generators;
|
||||
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Nwidart\Modules\Exceptions\FileAlreadyExistException;
|
||||
|
||||
class FileGenerator extends Generator
|
||||
{
|
||||
/**
|
||||
* The path wil be used.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $path;
|
||||
|
||||
/**
|
||||
* The contens will be used.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $contents;
|
||||
|
||||
/**
|
||||
* The laravel filesystem or null.
|
||||
*
|
||||
* @var \Illuminate\Filesystem\Filesystem|null
|
||||
*/
|
||||
protected $filesystem;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $overwriteFile;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param $path
|
||||
* @param $contents
|
||||
* @param null $filesystem
|
||||
*/
|
||||
public function __construct($path, $contents, $filesystem = null)
|
||||
{
|
||||
$this->path = $path;
|
||||
$this->contents = $contents;
|
||||
$this->filesystem = $filesystem ?: new Filesystem();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get contents.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getContents()
|
||||
{
|
||||
return $this->contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set contents.
|
||||
*
|
||||
* @param mixed $contents
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setContents($contents)
|
||||
{
|
||||
$this->contents = $contents;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get filesystem.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getFilesystem()
|
||||
{
|
||||
return $this->filesystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set filesystem.
|
||||
*
|
||||
* @param Filesystem $filesystem
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setFilesystem(Filesystem $filesystem)
|
||||
{
|
||||
$this->filesystem = $filesystem;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get path.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPath()
|
||||
{
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set path.
|
||||
*
|
||||
* @param mixed $path
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPath($path)
|
||||
{
|
||||
$this->path = $path;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function withFileOverwrite(bool $overwrite): FileGenerator
|
||||
{
|
||||
$this->overwriteFile = $overwrite;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the file.
|
||||
*/
|
||||
public function generate()
|
||||
{
|
||||
$path = $this->getPath();
|
||||
if (!$this->filesystem->exists($path)) {
|
||||
return $this->filesystem->put($path, $this->getContents());
|
||||
}
|
||||
if ($this->overwriteFile === true) {
|
||||
return $this->filesystem->put($path, $this->getContents());
|
||||
}
|
||||
|
||||
throw new FileAlreadyExistException('File already exists!');
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Nwidart\Modules\Generators;
|
||||
|
||||
abstract class Generator
|
||||
{
|
||||
}
|
||||
+602
@@ -0,0 +1,602 @@
|
||||
<?php
|
||||
|
||||
namespace Nwidart\Modules\Generators;
|
||||
|
||||
use Illuminate\Config\Repository as Config;
|
||||
use Illuminate\Console\Command as Console;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Illuminate\Support\Str;
|
||||
use Nwidart\Modules\Contracts\ActivatorInterface;
|
||||
use Nwidart\Modules\FileRepository;
|
||||
use Nwidart\Modules\Support\Config\GenerateConfigReader;
|
||||
use Nwidart\Modules\Support\Stub;
|
||||
|
||||
class ModuleGenerator extends Generator
|
||||
{
|
||||
/**
|
||||
* The module name will created.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* The laravel config instance.
|
||||
*
|
||||
* @var Config
|
||||
*/
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* The laravel filesystem instance.
|
||||
*
|
||||
* @var Filesystem
|
||||
*/
|
||||
protected $filesystem;
|
||||
|
||||
/**
|
||||
* The laravel console instance.
|
||||
*
|
||||
* @var Console
|
||||
*/
|
||||
protected $console;
|
||||
|
||||
/**
|
||||
* The laravel component Factory instance.
|
||||
*
|
||||
* @var \Illuminate\Console\View\Components\Factory
|
||||
*/
|
||||
protected $component;
|
||||
|
||||
|
||||
/**
|
||||
* The activator instance
|
||||
*
|
||||
* @var ActivatorInterface
|
||||
*/
|
||||
protected $activator;
|
||||
|
||||
/**
|
||||
* The module instance.
|
||||
*
|
||||
* @var \Nwidart\Modules\Module
|
||||
*/
|
||||
protected $module;
|
||||
|
||||
/**
|
||||
* Force status.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $force = false;
|
||||
|
||||
/**
|
||||
* set default module type.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $type = 'web';
|
||||
|
||||
/**
|
||||
* Enables the module.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $isActive = false;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
* @param $name
|
||||
* @param FileRepository $module
|
||||
* @param Config $config
|
||||
* @param Filesystem $filesystem
|
||||
* @param Console $console
|
||||
*/
|
||||
public function __construct(
|
||||
$name,
|
||||
FileRepository $module = null,
|
||||
Config $config = null,
|
||||
Filesystem $filesystem = null,
|
||||
Console $console = null,
|
||||
ActivatorInterface $activator = null
|
||||
) {
|
||||
$this->name = $name;
|
||||
$this->config = $config;
|
||||
$this->filesystem = $filesystem;
|
||||
$this->console = $console;
|
||||
$this->module = $module;
|
||||
$this->activator = $activator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type.
|
||||
*
|
||||
* @param string $type
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setType($type)
|
||||
{
|
||||
$this->type = $type;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set active flag.
|
||||
*
|
||||
* @param bool $active
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setActive(bool $active)
|
||||
{
|
||||
$this->isActive = $active;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of module will created. By default in studly case.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return Str::studly($this->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the laravel config instance.
|
||||
*
|
||||
* @return Config
|
||||
*/
|
||||
public function getConfig()
|
||||
{
|
||||
return $this->config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the laravel config instance.
|
||||
*
|
||||
* @param Config $config
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setConfig($config)
|
||||
{
|
||||
$this->config = $config;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the modules activator
|
||||
*
|
||||
* @param ActivatorInterface $activator
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setActivator(ActivatorInterface $activator)
|
||||
{
|
||||
$this->activator = $activator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the laravel filesystem instance.
|
||||
*
|
||||
* @return Filesystem
|
||||
*/
|
||||
public function getFilesystem()
|
||||
{
|
||||
return $this->filesystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the laravel filesystem instance.
|
||||
*
|
||||
* @param Filesystem $filesystem
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setFilesystem($filesystem)
|
||||
{
|
||||
$this->filesystem = $filesystem;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the laravel console instance.
|
||||
*
|
||||
* @return Console
|
||||
*/
|
||||
public function getConsole()
|
||||
{
|
||||
return $this->console;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the laravel console instance.
|
||||
*
|
||||
* @param Console $console
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setConsole($console)
|
||||
{
|
||||
$this->console = $console;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Console\View\Components\Factory
|
||||
*/
|
||||
public function getComponent(): \Illuminate\Console\View\Components\Factory
|
||||
{
|
||||
return $this->component;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Illuminate\Console\View\Components\Factory $component
|
||||
*/
|
||||
public function setComponent(\Illuminate\Console\View\Components\Factory $component): self
|
||||
{
|
||||
$this->component = $component;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the module instance.
|
||||
*
|
||||
* @return \Nwidart\Modules\Module
|
||||
*/
|
||||
public function getModule()
|
||||
{
|
||||
return $this->module;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the module instance.
|
||||
*
|
||||
* @param mixed $module
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setModule($module)
|
||||
{
|
||||
$this->module = $module;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of folders will created.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getFolders()
|
||||
{
|
||||
return $this->module->config('paths.generator');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of files will created.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getFiles()
|
||||
{
|
||||
return $this->module->config('stubs.files');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set force status.
|
||||
*
|
||||
* @param bool|int $force
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setForce($force)
|
||||
{
|
||||
$this->force = $force;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the module.
|
||||
*/
|
||||
public function generate(): int
|
||||
{
|
||||
$name = $this->getName();
|
||||
|
||||
if ($this->module->has($name)) {
|
||||
if ($this->force) {
|
||||
$this->module->delete($name);
|
||||
} else {
|
||||
$this->component->error("Module [{$name}] already exists!");
|
||||
|
||||
return E_ERROR;
|
||||
}
|
||||
}
|
||||
$this->component->info("Creating module: [$name]");
|
||||
|
||||
$this->generateFolders();
|
||||
|
||||
$this->generateModuleJsonFile();
|
||||
|
||||
if ($this->type !== 'plain') {
|
||||
$this->generateFiles();
|
||||
$this->generateResources();
|
||||
}
|
||||
|
||||
if ($this->type === 'plain') {
|
||||
$this->cleanModuleJsonFile();
|
||||
}
|
||||
|
||||
$this->activator->setActiveByName($name, $this->isActive);
|
||||
|
||||
$this->console->newLine(1);
|
||||
|
||||
$this->component->info("Module [{$name}] created successfully.");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the folders.
|
||||
*/
|
||||
public function generateFolders()
|
||||
{
|
||||
foreach ($this->getFolders() as $key => $folder) {
|
||||
$folder = GenerateConfigReader::read($key);
|
||||
|
||||
if ($folder->generate() === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$path = $this->module->getModulePath($this->getName()) . '/' . $folder->getPath();
|
||||
|
||||
$this->filesystem->makeDirectory($path, 0755, true);
|
||||
if (config('modules.stubs.gitkeep')) {
|
||||
$this->generateGitKeep($path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate git keep to the specified path.
|
||||
*
|
||||
* @param string $path
|
||||
*/
|
||||
public function generateGitKeep($path)
|
||||
{
|
||||
$this->filesystem->put($path . '/.gitkeep', '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the files.
|
||||
*/
|
||||
public function generateFiles()
|
||||
{
|
||||
foreach ($this->getFiles() as $stub => $file) {
|
||||
$path = $this->module->getModulePath($this->getName()) . $file;
|
||||
|
||||
$this->component->task("Generating file {$path}",function () use ($stub, $path) {
|
||||
if (!$this->filesystem->isDirectory($dir = dirname($path))) {
|
||||
$this->filesystem->makeDirectory($dir, 0775, true);
|
||||
}
|
||||
|
||||
$this->filesystem->put($path, $this->getStubContents($stub));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate some resources.
|
||||
*/
|
||||
public function generateResources()
|
||||
{
|
||||
if (GenerateConfigReader::read('seeder')->generate() === true) {
|
||||
$this->console->call('module:make-seed', [
|
||||
'name' => $this->getName(),
|
||||
'module' => $this->getName(),
|
||||
'--master' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
if (GenerateConfigReader::read('provider')->generate() === true) {
|
||||
$this->console->call('module:make-provider', [
|
||||
'name' => $this->getName() . 'ServiceProvider',
|
||||
'module' => $this->getName(),
|
||||
'--master' => true,
|
||||
]);
|
||||
$this->console->call('module:route-provider', [
|
||||
'module' => $this->getName(),
|
||||
]);
|
||||
}
|
||||
|
||||
if (GenerateConfigReader::read('controller')->generate() === true) {
|
||||
$options = $this->type=='api' ? ['--api'=>true] : [];
|
||||
$this->console->call('module:make-controller', [
|
||||
'controller' => $this->getName() . 'Controller',
|
||||
'module' => $this->getName(),
|
||||
]+$options);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the contents of the specified stub file by given stub name.
|
||||
*
|
||||
* @param $stub
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getStubContents($stub)
|
||||
{
|
||||
return (new Stub(
|
||||
'/' . $stub . '.stub',
|
||||
$this->getReplacement($stub)
|
||||
)
|
||||
)->render();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* get the list for the replacements.
|
||||
*/
|
||||
public function getReplacements()
|
||||
{
|
||||
return $this->module->config('stubs.replacements');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get array replacement for the specified stub.
|
||||
*
|
||||
* @param $stub
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getReplacement($stub)
|
||||
{
|
||||
$replacements = $this->module->config('stubs.replacements');
|
||||
|
||||
if (!isset($replacements[$stub])) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$keys = $replacements[$stub];
|
||||
|
||||
$replaces = [];
|
||||
|
||||
if ($stub === 'json' || $stub === 'composer') {
|
||||
if (in_array('PROVIDER_NAMESPACE', $keys, true) === false) {
|
||||
$keys[] = 'PROVIDER_NAMESPACE';
|
||||
}
|
||||
}
|
||||
foreach ($keys as $key) {
|
||||
if (method_exists($this, $method = 'get' . ucfirst(Str::studly(strtolower($key))) . 'Replacement')) {
|
||||
$replaces[$key] = $this->$method();
|
||||
} else {
|
||||
$replaces[$key] = null;
|
||||
}
|
||||
}
|
||||
|
||||
return $replaces;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the module.json file
|
||||
*/
|
||||
private function generateModuleJsonFile()
|
||||
{
|
||||
$path = $this->module->getModulePath($this->getName()) . 'module.json';
|
||||
|
||||
$this->component->task("Generating file $path",function () use ($path) {
|
||||
if (!$this->filesystem->isDirectory($dir = dirname($path))) {
|
||||
$this->filesystem->makeDirectory($dir, 0775, true);
|
||||
}
|
||||
|
||||
$this->filesystem->put($path, $this->getStubContents('json'));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the default service provider that was added in the module.json file
|
||||
* This is needed when a --plain module was created
|
||||
*/
|
||||
private function cleanModuleJsonFile()
|
||||
{
|
||||
$path = $this->module->getModulePath($this->getName()) . 'module.json';
|
||||
|
||||
$content = $this->filesystem->get($path);
|
||||
$namespace = $this->getModuleNamespaceReplacement();
|
||||
$studlyName = $this->getStudlyNameReplacement();
|
||||
|
||||
$provider = '"' . $namespace . '\\\\' . $studlyName . '\\\\Providers\\\\' . $studlyName . 'ServiceProvider"';
|
||||
|
||||
$content = str_replace($provider, '', $content);
|
||||
|
||||
$this->filesystem->put($path, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the module name in lower case.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getLowerNameReplacement()
|
||||
{
|
||||
return strtolower($this->getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the module name in studly case.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getStudlyNameReplacement()
|
||||
{
|
||||
return $this->getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get replacement for $VENDOR$.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getVendorReplacement()
|
||||
{
|
||||
return $this->module->config('composer.vendor');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get replacement for $MODULE_NAMESPACE$.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getModuleNamespaceReplacement()
|
||||
{
|
||||
return str_replace('\\', '\\\\', $this->module->config('namespace'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get replacement for $CONTROLLER_NAMESPACE$.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function getControllerNamespaceReplacement(): string
|
||||
{
|
||||
return str_replace('/', '\\', $this->module->config('paths.generator.controller.namespace') ?: $this->module->config('paths.generator.controller.path', 'Controller'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get replacement for $AUTHOR_NAME$.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getAuthorNameReplacement()
|
||||
{
|
||||
return $this->module->config('composer.author.name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get replacement for $AUTHOR_EMAIL$.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getAuthorEmailReplacement()
|
||||
{
|
||||
return $this->module->config('composer.author.email');
|
||||
}
|
||||
|
||||
protected function getProviderNamespaceReplacement(): string
|
||||
{
|
||||
return str_replace('\\', '\\\\', GenerateConfigReader::read('provider')->getNamespace());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user