modifs.mineures sans commentaires
This commit is contained in:
		
							parent
							
								
									2456a48b38
								
							
						
					
					
						commit
						373910b170
					
				| @ -3,6 +3,7 @@ namespace nulib\app; | ||||
| 
 | ||||
| use nulib\A; | ||||
| use nulib\app\cli\Application; | ||||
| use nulib\app\config\ProfileManager; | ||||
| use nulib\cl; | ||||
| use nulib\ExitError; | ||||
| use nulib\os\path; | ||||
| @ -97,7 +98,7 @@ class app { | ||||
| 
 | ||||
|   static function params_putenv(): void { | ||||
|     $params = serialize(self::get()->getParams()); | ||||
|     putenv("NULIB_APP_app_params=". $params); | ||||
|     putenv("NULIB_APP_app_params=$params"); | ||||
|   } | ||||
| 
 | ||||
|   static function params_getenv(): ?array { | ||||
| @ -107,9 +108,7 @@ class app { | ||||
|   } | ||||
| 
 | ||||
|   static function get_profile(?bool &$productionMode=null): string { | ||||
|     $app = self::get(); | ||||
|     $productionMode = $app->isProductionMode(); | ||||
|     return $app->getProfile(); | ||||
|     return self::get()->getProfile($productionMode); | ||||
|   } | ||||
| 
 | ||||
|   static function set_profile(?string $profile=null, ?bool $productionMode=null): void { | ||||
| @ -137,7 +136,6 @@ class app { | ||||
|       ] = $params; | ||||
|       $cwd = $params["cwd"] ?? null; | ||||
|       $datadirIsDefined = true; | ||||
|       $profile = $params["profile"] ?? null; | ||||
|     } else { | ||||
|       # projdir
 | ||||
|       $projdir = $params["projdir"] ?? null; | ||||
| @ -190,15 +188,16 @@ class app { | ||||
|       if ($logdir === false) $logdir = $params["logdir"] ?? null; | ||||
|       if ($logdir === null) $logdir = "log"; | ||||
|       $logdir = path::reljoin($datadir, $logdir); | ||||
|       # profile
 | ||||
|       $profile = getenv("${APPCODE}_PROFILE"); | ||||
|       if ($profile === false) $profile = getenv("APP_PROFILE"); | ||||
|       if ($profile === false) $profile = $params["profile"] ?? null; | ||||
|     } | ||||
|     # cwd
 | ||||
|     $cwd ??= getcwd(); | ||||
|     # profile
 | ||||
|     $profile ??= $datadirIsDefined? "prod": "devel"; | ||||
|     $this->profileManager = new ProfileManager([ | ||||
|       "app" => true, | ||||
|       "name" => $appcode, | ||||
|       "default_profile" => $datadirIsDefined? "prod": "devel", | ||||
|       "profile" => $params["profile"] ?? null, | ||||
|     ]); | ||||
| 
 | ||||
|     $this->projdir = $projdir; | ||||
|     $this->vendor = $vendor; | ||||
| @ -208,7 +207,6 @@ class app { | ||||
|     $this->etcdir = $etcdir; | ||||
|     $this->vardir = $vardir; | ||||
|     $this->logdir = $logdir; | ||||
|     $this->profile = $profile; | ||||
| 
 | ||||
|     # name, title
 | ||||
|     $appgroup = $params["appgroup"] ?? null; | ||||
| @ -283,25 +281,18 @@ class app { | ||||
|     return $this->logdir; | ||||
|   } | ||||
| 
 | ||||
|   protected string $profile; | ||||
|   protected ProfileManager $profileManager; | ||||
| 
 | ||||
|   function getProfile(): string { | ||||
|     return $this->profile; | ||||
|   function getProfile(?bool &$productionMode=null): string { | ||||
|     return $this->profileManager->getProfile($productionMode); | ||||
|   } | ||||
| 
 | ||||
|   protected bool $productionMode; | ||||
| 
 | ||||
|   function isProductionMode(): bool { | ||||
|     return $this->productionMode; | ||||
|     return $this->profileManager->isProductionMode(); | ||||
|   } | ||||
| 
 | ||||
|   function setProfile(?string $profile, ?bool $productionMode=null): void { | ||||
|     $profile ??= $this->profile; | ||||
|     $this->profile = $profile; | ||||
|     if ($productionMode === null) { | ||||
|       $productionMode = $profile === "prod" || $profile === "test"; | ||||
|     } | ||||
|     $this->productionMode = $productionMode; | ||||
|     $this->profileManager->setProfile($profile, $productionMode); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
| @ -312,7 +303,7 @@ class app { | ||||
|    */ | ||||
|   function withProfile(string $file, $profile): string { | ||||
|     if ($profile !== false) { | ||||
|       if ($profile === null) $profile = $this->getProfile(); | ||||
|       $profile ??= $this->getProfile(); | ||||
|       [$dir, $filename] = path::split($file); | ||||
|       $basename = path::basename($filename); | ||||
|       $ext = path::ext($file); | ||||
| @ -386,7 +377,7 @@ class app { | ||||
|       "etcdir" => $this->etcdir, | ||||
|       "vardir" => $this->vardir, | ||||
|       "logdir" => $this->logdir, | ||||
|       "profile" => $this->le, | ||||
|       "profile" => $this->getProfile(), | ||||
|       "appgroup" => $this->appgroup, | ||||
|       "name" => $this->name, | ||||
|       "title" => $this->title, | ||||
|  | ||||
| @ -10,15 +10,6 @@ use nulib\cl; | ||||
|  */ | ||||
| class config { | ||||
|   protected static ConfigManager $config; | ||||
|   protected static ProfileManager $profile; | ||||
| 
 | ||||
|   static function init(string $appcode): void { | ||||
|     self::$config = new ConfigManager(); | ||||
|     self::$profile = new ProfileManager([ | ||||
|       "app" => true, | ||||
|       "name" => $appcode, | ||||
|     ]); | ||||
|   } | ||||
| 
 | ||||
|   static function init_configurator($configurators): void { | ||||
|     self::$config->addConfigurators(cl::with($configurators)); | ||||
| @ -28,3 +19,9 @@ class config { | ||||
|     self::$config->configure($params); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| new class extends config { | ||||
|   function __construct() { | ||||
|     self::$config = new ConfigManager(); | ||||
|   } | ||||
| }; | ||||
| @ -55,6 +55,12 @@ class ProfileManager { | ||||
|         $this->envKeys = [$envKey]; | ||||
|       } | ||||
|     } | ||||
|     $this->defaultProfile = $params["default_profile"] ?? null; | ||||
|     $profile = $params["profile"] ?? null; | ||||
|     $productionMode = $params["production_mode"] ?? null; | ||||
|     $productionMode ??= $this->productionModes[$profile] ?? false; | ||||
|     $this->profile = $profile; | ||||
|     $this->productionMode = $productionMode; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
| @ -89,7 +95,7 @@ class ProfileManager { | ||||
|     return null; | ||||
|   } | ||||
| 
 | ||||
|   protected ?string $defaultProfile = null; | ||||
|   protected ?string $defaultProfile; | ||||
| 
 | ||||
|   function getDefaultProfile(): ?string { | ||||
|     return $this->defaultProfile; | ||||
| @ -99,9 +105,9 @@ class ProfileManager { | ||||
|     $this->defaultProfile = $profile; | ||||
|   } | ||||
| 
 | ||||
|   protected ?string $profile = null; | ||||
|   protected ?string $profile; | ||||
| 
 | ||||
|   protected bool $productionMode = false; | ||||
|   protected bool $productionMode; | ||||
| 
 | ||||
|   protected function resolveProfile(): void { | ||||
|     $profile ??= $this->getenvProfile(); | ||||
| @ -122,6 +128,10 @@ class ProfileManager { | ||||
|     return $this->profile; | ||||
|   } | ||||
| 
 | ||||
|   function isProductionMode(): bool { | ||||
|     return $this->productionMode; | ||||
|   } | ||||
| 
 | ||||
|   function setProfile(?string $profile=null, ?bool $productionMode=null): void { | ||||
|     if ($profile === null) $this->profile = null; | ||||
|     $profile ??= $this->getProfile($productionMode); | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib { | ||||
| namespace nulib\app { | ||||
|   use nulib\tests\TestCase; | ||||
|   use nulib\impl\config; | ||||
|   use nulib\impl\myapp; | ||||
|   use nulib\impl\MyApplication1; | ||||
|   use nulib\impl\MyApplication2; | ||||
|   use nulib\app\impl\config; | ||||
|   use nulib\app\impl\myapp; | ||||
|   use nulib\app\impl\MyApplication1; | ||||
|   use nulib\app\impl\MyApplication2; | ||||
| 
 | ||||
|   class appTest extends TestCase { | ||||
|     function testWith() { | ||||
| @ -19,7 +19,7 @@ namespace nulib { | ||||
|           "bindir" => "$projdir/vendor/bin", | ||||
|           "autoload" => "$projdir/vendor/autoload.php", | ||||
|         ], | ||||
|         "appcode" => "nur-sery", | ||||
|         "appcode" => "nur-ture", | ||||
|         "cwd" => $cwd, | ||||
|         "datadir" => "$projdir/devel", | ||||
|         "etcdir" => "$projdir/devel/etc", | ||||
| @ -38,7 +38,7 @@ namespace nulib { | ||||
|           "bindir" => "$projdir/vendor/bin", | ||||
|           "autoload" => "$projdir/vendor/autoload.php", | ||||
|         ], | ||||
|         "appcode" => "nur-sery", | ||||
|         "appcode" => "nur-ture", | ||||
|         "cwd" => $cwd, | ||||
|         "datadir" => "$projdir/devel", | ||||
|         "etcdir" => "$projdir/devel/etc", | ||||
| @ -63,7 +63,7 @@ namespace nulib { | ||||
|           "bindir" => "$projdir/vendor/bin", | ||||
|           "autoload" => "$projdir/vendor/autoload.php", | ||||
|         ], | ||||
|         "appcode" => "nur-sery", | ||||
|         "appcode" => "nur-ture", | ||||
|         "cwd" => $cwd, | ||||
|         "datadir" => "$projdir/devel", | ||||
|         "etcdir" => "$projdir/devel/etc", | ||||
| @ -82,7 +82,7 @@ namespace nulib { | ||||
|           "bindir" => "$projdir/vendor/bin", | ||||
|           "autoload" => "$projdir/vendor/autoload.php", | ||||
|         ], | ||||
|         "appcode" => "nur-sery", | ||||
|         "appcode" => "nur-ture", | ||||
|         "cwd" => $cwd, | ||||
|         "datadir" => "$projdir/devel", | ||||
|         "etcdir" => "$projdir/devel/etc", | ||||
| @ -97,14 +97,14 @@ namespace nulib { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| namespace nulib\impl { | ||||
| namespace nulib\app\impl { | ||||
| 
 | ||||
|   use nulib\app\cli\Application; | ||||
|   use nulib\os\path; | ||||
|   use nulib\app\app; | ||||
| 
 | ||||
|   class config { | ||||
|     const PROJDIR = __DIR__.'/..'; | ||||
|     const PROJDIR = __DIR__.'/../..'; | ||||
| 
 | ||||
|     static function get_projdir(): string { | ||||
|       return path::abspath(self::PROJDIR); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user