From c902801e1fa052673527e81e1b558b45aa72abc4 Mon Sep 17 00:00:00 2001 From: grandeljay Date: Sat, 4 Nov 2023 17:07:28 +0100 Subject: [PATCH 1/4] feat: use latest archive tag/version --- src/Classes/ModuleCreator.php | 49 ++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/src/Classes/ModuleCreator.php b/src/Classes/ModuleCreator.php index 217a9128..b91fe639 100644 --- a/src/Classes/ModuleCreator.php +++ b/src/Classes/ModuleCreator.php @@ -35,7 +35,7 @@ public function createModule($vendorPrefix, $vendorName, $moduleName) $moduleConstName = str_replace('-', '_', strtoupper('MODULE_' . $vendorPrefix . '_' . $moduleName)); $this->createFolders($archiveName, $fileName, $vendorName, $moduleNameCamelCase); - $this->createModuleInfoJsonFile($archiveName, $moduleName); + $this->createModuleInfoJsonFile($vendorName, $moduleName); $this->createSystemModuleFile($archiveName, $fileName, $className, $moduleConstName); $this->createSystemModuleLanguageDeFile($archiveName, $fileName, $moduleConstName, $vendorName); $this->createSystemModuleLanguageEnFile($archiveName, $fileName, $moduleConstName, $vendorName); @@ -76,8 +76,49 @@ public function createFolders($archiveName, $fileName, $vendorName, $moduleNameC @mkdir(App::getModulesRoot() . '/' . $archiveName . '/src-mmlc/Classes'); } - public function createModuleInfoJsonFile($archiveName, $moduleName) + private function getLatestVersion(string $archiveName): string { + $version = '0.1.0'; + + /** + * Create GitHub API reqest. + * + * GitHub requries a `User-Agent` header or it will respond with HTTP + * 403. + */ + $requestOptions = [ + 'http' => [ + 'header' => [ + 'User-Agent: PHP', + ], + ], + ]; + $requestContext = stream_context_create($requestOptions); + $requestResponse = file_get_contents( + sprintf( + 'https://api.github.com/repos/%s/tags', + $archiveName + ), + $use_include_path = false, + $requestContext + ); + + if (false !== $requestResponse) { + $archiveTags = json_decode($requestResponse, $associative = true); + $archiveTagsLatest = reset($archiveTags); + + if (isset($archiveTagsLatest['name'])) { + $version = $archiveTagsLatest['name']; + } + } + + return $version; + } + + public function createModuleInfoJsonFile($vendorName, $moduleName) + { + $archiveName = $vendorName . '/' . $moduleName; + $info = [ 'name' => $moduleName, 'archiveName' => $archiveName, @@ -96,8 +137,8 @@ public function createModuleInfoJsonFile($archiveName, $moduleName) 'price' => '', 'require' => [ - 'composer/autoload' => '^1.1.0', - 'robinthehood/modified-std-module' => '^0.1.0' + 'composer/autoload' => '^' . $this->getLatestVersion('RobinTheHood/modified-composer-autoload'), + 'robinthehood/modified-std-module' => '^' . $this->getLatestVersion('RobinTheHood/modified-std-module'), ], 'modifiedCompatibility' => [ From 5ef3f97dcfb5881da9abb3b7ed6117ba785d2b4e Mon Sep 17 00:00:00 2001 From: grandeljay Date: Sat, 4 Nov 2023 19:18:35 +0100 Subject: [PATCH 2/4] feat: use current modified version --- src/Classes/ModuleCreator.php | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Classes/ModuleCreator.php b/src/Classes/ModuleCreator.php index b91fe639..681a3df5 100644 --- a/src/Classes/ModuleCreator.php +++ b/src/Classes/ModuleCreator.php @@ -115,6 +115,32 @@ private function getLatestVersion(string $archiveName): string return $version; } + private function getCurrentModifiedVersion(): string + { + $version = '2.0.7.2'; + + $shopRoot = App::getShopRoot(); + $modifiedVersionCachePath = $shopRoot . '/cache/version.cache'; + + if (!\file_exists($modifiedVersionCachePath)) { + return $version; + } + + $modifiedVersionCacheJson = \file_get_contents($modifiedVersionCachePath); + + if (false === $modifiedVersionCacheJson) { + return $version; + } + + $modifiedVersionCache = \json_decode($modifiedVersionCacheJson, $associative = true); + + if (isset($modifiedVersionCache['details']['Shop']['shop']['version'])) { + $version = $modifiedVersionCache['details']['Shop']['shop']['version']; + } + + return $version; + } + public function createModuleInfoJsonFile($vendorName, $moduleName) { $archiveName = $vendorName . '/' . $moduleName; @@ -142,7 +168,7 @@ public function createModuleInfoJsonFile($vendorName, $moduleName) ], 'modifiedCompatibility' => [ - '2.0.4.2' + $this->getCurrentModifiedVersion(), ], "mmlc" => [ From 3cab6658df1d7cdc1e14ccb51756782e3d3fe9c2 Mon Sep 17 00:00:00 2001 From: grandeljay Date: Sun, 5 Nov 2023 12:56:22 +0100 Subject: [PATCH 3/4] refactor: add comma to array item --- src/Classes/ModuleCreator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Classes/ModuleCreator.php b/src/Classes/ModuleCreator.php index df50732f..8cd82491 100644 --- a/src/Classes/ModuleCreator.php +++ b/src/Classes/ModuleCreator.php @@ -145,7 +145,7 @@ public function createModuleInfoJsonFile($vendorName, $moduleName) ], 'modifiedCompatibility' => [ - $this->getCurrentModifiedVersion(), + $this->getCurrentModifiedVersion() . ',', ], "mmlc" => [ From b724319b5ba4dbcbfe4b1396a72f8b93ad11b4b7 Mon Sep 17 00:00:00 2001 From: grandeljay Date: Sun, 5 Nov 2023 14:40:06 +0100 Subject: [PATCH 4/4] refactor: use `ShopInfo::getModifiedVersion` --- src/Classes/ModuleCreator.php | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/src/Classes/ModuleCreator.php b/src/Classes/ModuleCreator.php index 8cd82491..65bbb56c 100644 --- a/src/Classes/ModuleCreator.php +++ b/src/Classes/ModuleCreator.php @@ -13,7 +13,7 @@ namespace RobinTheHood\ModifiedModuleLoaderClient; -use RobinTheHood\ModifiedModuleLoaderClient\App; +use RobinTheHood\ModifiedModuleLoaderClient\{App, ShopInfo}; use RobinTheHood\ModifiedModuleLoaderClient\Loader\RemoteModuleLoader; class ModuleCreator @@ -92,32 +92,6 @@ private function getLatestVersion(string $archiveName): string return $module->getVersion(); } - private function getCurrentModifiedVersion(): string - { - $version = '2.0.7.2'; - - $shopRoot = App::getShopRoot(); - $modifiedVersionCachePath = $shopRoot . '/cache/version.cache'; - - if (!\file_exists($modifiedVersionCachePath)) { - return $version; - } - - $modifiedVersionCacheJson = \file_get_contents($modifiedVersionCachePath); - - if (false === $modifiedVersionCacheJson) { - return $version; - } - - $modifiedVersionCache = \json_decode($modifiedVersionCacheJson, $associative = true); - - if (isset($modifiedVersionCache['details']['Shop']['shop']['version'])) { - $version = $modifiedVersionCache['details']['Shop']['shop']['version']; - } - - return $version; - } - public function createModuleInfoJsonFile($vendorName, $moduleName) { $archiveName = $vendorName . '/' . $moduleName; @@ -145,7 +119,7 @@ public function createModuleInfoJsonFile($vendorName, $moduleName) ], 'modifiedCompatibility' => [ - $this->getCurrentModifiedVersion() . ',', + ShopInfo::getModifiedVersion() . ',', ], "mmlc" => [