diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/scripts/release.php | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/scripts/release.php')
| -rwxr-xr-x | srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/scripts/release.php | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/scripts/release.php b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/scripts/release.php new file mode 100755 index 0000000..0af0ddf --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/scripts/release.php @@ -0,0 +1,165 @@ +#!/usr/bin/env php +<?php +declare(strict_types = 1); +require_once(__DIR__ . '/../vendor/autoload.php'); + +use PhpSchool\CliMenu\CliMenu; +use PhpSchool\CliMenu\Builder\CliMenuBuilder; + +/** + * Manage release system + * @license Unlicense + */ + + /** + * Validate a version name + * + * @param string $version The version in format x.y.z + * @return bool + */ +function validateVersion(string $version): bool +{ + return preg_match("/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/", $version) === 1; +} + +/** + * Version to int + * + * @param string $version The version in format x.y.z + * @return int + */ +function versionToInt(string $version): int +{ + $matchs = array(); + preg_match("/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/", $version, $matchs); + return (int) ( sprintf('%03d', $matchs[1]).sprintf('%03d', $matchs[2]).sprintf('%03d', $matchs[3]) ); +} + +/** + * Get the version from a JSON file with attribute version + * + * @param string $filename The filename + * @return int + */ +function getVersion(string $filename): int +{ + $version = json_decode(file_get_contents($filename))->version; + return versionToInt($version); +} + +/** + * Int to version + * + * @param int $version The version in int format + * @example $version 123456789 for 123.456.789 + * @example $version 1010020 for 1.10.20 + * @return string + */ +function intToVersion(int $version): string +{ + $major = ($version / 1000000) | 0; + $minor = ( ($version / 1000) - ($major * 1000) ) | 0; + $patch = $version - (($major * 1000000) + ($minor * 1000)); + return $major.".".$minor.".".$patch; +} + +/** + * Saves files (composer, package) + * + * @param string $composerSaveVersion The actual composer version + * @param string $npmSaveVersion The actual npm version + * @return void + */ +function saveFiles(string $composerSaveVersion, string $npmSaveVersion): void +{ + global $composerActualData, $npmActualData; + $composerActualData->version = $composerSaveVersion; + $npmActualData->version = $npmSaveVersion; + $flags = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES; + file_put_contents(__DIR__."/../composer.json", json_encode($composerActualData, $flags).PHP_EOL); + file_put_contents(__DIR__."/../package.json", json_encode($npmActualData, $flags).PHP_EOL); +} + +/* +// Test data +echo "#1 ".intToVersion(123456789).PHP_EOL; +echo "#2 ".versionToInt("1.10.20").PHP_EOL; +echo "#3 ".intToVersion(100400100).PHP_EOL; +echo "#4 ".intToVersion(1010020).PHP_EOL; +echo "#5 ".getVersion(__DIR__."/../composer.json").PHP_EOL; +echo "#6 ".intToVersion(getVersion(__DIR__."/../composer.json")).PHP_EOL; +*/ +echo "Release a new version".PHP_EOL; +$composerActualData = json_decode(file_get_contents(__DIR__."/../composer.json")); +$npmActualData = json_decode(file_get_contents(__DIR__."/../package.json")); + +$composerActualVersion = $composerActualData->version; +$npmActualVersion = $npmActualData->version; + +$composerSaveVersion = $composerActualVersion; +$npmSaveVersion = $npmActualVersion; + + + +$itemCallable = function (CliMenu $menu): void { + global $composerActualVersion, $npmActualVersion, $composerSaveVersion, $npmSaveVersion; + switch ($menu->getSelectedItem()->getText()) { + case 'Major': + $composerSaveVersion = intToVersion(versionToInt($composerSaveVersion) + 1000000); + $npmSaveVersion = intToVersion(versionToInt($npmSaveVersion) + 1000000); + break; + case 'Minor': + $composerSaveVersion = intToVersion(versionToInt($composerSaveVersion) + 1000); + $npmSaveVersion = intToVersion(versionToInt($npmSaveVersion) + 1000); + break; + case 'Patch': + $composerSaveVersion = intToVersion(versionToInt($composerSaveVersion) + 1); + $npmSaveVersion = intToVersion(versionToInt($npmSaveVersion) + 1); + break; + } + + $menu->close(); + echo "Saved versions, composer: $composerSaveVersion, npm: $npmSaveVersion"; + saveFiles($composerSaveVersion, $npmSaveVersion); +}; + +$cbManual = function (CliMenu $menu): void { + global $composerActualVersion, $npmActualVersion, $composerSaveVersion, $npmSaveVersion; + $result = $menu->askPassword() + ->setPromptText("Actual composer version: $composerActualVersion") + ->setPlaceholderText($composerActualVersion) + ->setValidationFailedText('Invalid version, try again') + ->setValidator( + function ($version) { + return validateVersion($version); + } + )->ask(); + + $composerSaveVersion = $result->fetch(); + + $result = $menu->askPassword() + ->setPromptText("Actual npm version: $npmActualVersion") + ->setPlaceholderText($composerActualVersion) + ->setValidationFailedText('Invalid version, try again') + ->setValidator( + function ($version) { + return validateVersion($version); + } + )->ask(); + $npmSaveVersion = $result->fetch(); + $menu->close(); + echo "Saved versions, composer: $composerSaveVersion, npm: $npmSaveVersion"; + saveFiles($composerSaveVersion, $npmSaveVersion); +}; + +$menu = (new CliMenuBuilder())->setTitle('Bump version') + ->addItem('Major', $itemCallable) + ->addItem('Minor', $itemCallable) + ->addItem('Patch', $itemCallable) + ->addItem('Manual', $cbManual) + ->addLineBreak('-') + ->setPadding(2, 4) + ->setMarginAuto() + ->build(); + +$menu->open(); |
