Last active
July 24, 2024 11:34
-
-
Save stephane888/8aea9918e2e26e51d47b6d926c7e1a89 to your computer and use it in GitHub Desktop.
Generates a composer file with the fixed packages
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace hbk; | |
| /** | |
| * Ce fichier permet de generer un fichier composer avec les versions fixe des | |
| * modules. | |
| * Ce fichier composer peut etre ajouter via un autre module ou via le module de | |
| * merge : wikimedia/composer-merge-plugin | |
| * Run in command : php generate_composer_with_fixe_version.php | |
| */ | |
| // $autoloader = require_once 'web/autoload.php'; | |
| class generate_composer_with_fixe_version { | |
| public function build() { | |
| $this->generateBasicFile(); | |
| } | |
| /** | |
| * -- | |
| */ | |
| protected function generateBasicFile() { | |
| $cmd = "composer show --format=json"; | |
| $result = $this->excuteCmd($cmd); | |
| if (!$result['return_var']) { | |
| $composer = $this->composerHeader(); | |
| $packages = json_decode(implode("", $this->cleanValues($result['output'])), true); | |
| foreach ($packages['installed'] as $package) { | |
| if (!empty($package['version']) && !str_contains($package['name'], "composer/") && !str_contains($package['name'], "wb_horizon_stable") && !str_contains($package['name'], "wb_horizon_generate")) | |
| $composer['require'][$package['name']] = str_replace(" ", "#", $package['version']); | |
| } | |
| ksort($composer['require']); | |
| file_put_contents('composer_generate.json', json_encode($composer, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); | |
| echo "Le fichier composer_generate.json a été generé avec " . count($composer['require']) . " pacquets requis \n"; | |
| } | |
| else | |
| echo "Nous n'avons pas pu generer le fichier composer_generate.json"; | |
| } | |
| /** | |
| * | |
| * @return array[] | |
| */ | |
| protected function composerHeader() { | |
| return [ | |
| 'name' => 'habeuk/paquet_stable', | |
| 'description' => "Permet d'avoir des pacquets stable pour la production", | |
| 'license' => 'MIT', | |
| 'authors' => [ | |
| [ | |
| 'name' => 'kouwa stephane', | |
| 'email' => 'kksasteph888@gmail.com' | |
| ] | |
| ], | |
| 'minimum-stability' => 'dev', | |
| 'require' => [] | |
| ]; | |
| } | |
| /** | |
| * Permet de nettoyer les données. | |
| * Les premieres lignes peuvent avoir des avertissements ou autre | |
| * informations. | |
| * | |
| * @param array $output | |
| */ | |
| protected function cleanValues(array $output) { | |
| $clenArray = $output; | |
| foreach ($output as $k => $value) { | |
| if ($value != "{") { | |
| unset($clenArray[$k]); | |
| } | |
| else | |
| break; | |
| } | |
| return $clenArray; | |
| } | |
| /** | |
| * Permet d'executé une commande. | |
| * | |
| * @param string $cmd | |
| * @return array | |
| */ | |
| protected function excuteCmd(string $cmd) { | |
| ob_start(); | |
| $return_var = ''; | |
| $output = ''; | |
| exec($cmd . " 2>&1", $output, $return_var); | |
| $result = ob_get_contents(); | |
| ob_end_clean(); | |
| $debug = [ | |
| 'output' => $output, | |
| 'return_var' => $return_var, | |
| 'result' => $result, | |
| 'script' => $cmd | |
| ]; | |
| return $debug; | |
| } | |
| } | |
| $generate_composer_with_fixe_version = new generate_composer_with_fixe_version(); | |
| $generate_composer_with_fixe_version->build(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment