![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/dceprojects.corals.io/vendor/vierbergenlars/php-semver/bin/ |
#!/usr/bin/env php <?php namespace vierbergenlars\SemVer\Application\UpdateVersions; if (file_exists(__DIR__ . '/../vendor/autoload.php')) { require_once __DIR__ . '/../vendor/autoload.php'; } else { if (file_exists(__DIR__ . '/../../../autoload.php')) { require_once __DIR__ . '/../../../autoload.php'; } } use vierbergenlars\SemVer\version; use vierbergenlars\SemVer\expression; use vierbergenlars\SemVer\SemVerException; //Defaults /** * Input file containing the version * @var string */ $input = 'composer.json'; /** * Array of paths to write to * @var array */ $writeto = array(); /** * Root directory * @var string */ $root = '.'; /** * Do not do anything * @var bool */ $dry_run = false; /** * Shell command to execute for each updated file * @var string */ $shell = NULL; // Get all arguments while (\count($argv) > 0) { $arg = \array_shift($argv); switch ($arg) { case '-p': case '--package': $input = \array_shift($argv); break; case '-s': case '--source': $writeto[] = \array_shift($argv); break; case '-b': case '--base': $root = \array_shift($argv); break; case '--dry-run': $dry_run = true; break; case '--shell': $shell = \array_shift($argv); break; case '-h': case '--help': help(); } } //Defaults writeto if ($writeto === array()) { $writeto = array('src', 'bin'); } //Add root paths $input = $root . '/' . $input; foreach ($writeto as &$write) { $write = $root . '/' . $write; } //Read those JSON files if (!\file_exists($input)) fail('Package file does not exist'); $input = \json_decode(\file_get_contents($input), true); if (!$input) { fail('Invalid JSON file!'); } //Initialize the version from package file try { $version = new version($input['version']); } catch (SemVerException $e) { fail($e->getMessage()); } $version = $version->getString(); foreach ($writeto as $output) { $dir = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($output)); foreach ($dir as $file) { if (\preg_match('/[\\\\\\/]\\./', $file)) continue; //Ignore . directories $contents1 = \file_get_contents($file); $contents2 = \str_replace(array('2.0.0--', '{{{' . 'version}}}'), $version, $contents1); if ($contents1 != $contents2) { fwrite(\STDOUT, 'Writing version information to file ' . $file . \PHP_EOL); if ($shell !== null) { \system($shell . ' "' . $file . '"', $exit_code); if ($exit_code != 0) fail('Subshell exited ' . $exit_code); } if ($dry_run) { \fwrite(\STDOUT, '\\_Not writing to disk' . \PHP_EOL); } else { \file_put_contents($file, $contents2); } } } } function help() { $e = array( 'Usage: update-versions [options]' , '' , ' -p <composerfile> Use this file as composer.json file' , ' --package <composerfile>' , ' -s <dir> Add directory to sources to scan. May be repeated.' , ' --source <dir>' , ' -b <dir> Use this directory as base directory.' , ' --base <dir>' , ' --shell <command> Execute <command> for each changed file.' , ' --dry-run Do not write files.' , '' , 'This program exits 0 on success or 1 on failure.' , 'Defaults to "--package composer.json --source src --source bin --base ."' ); echo \implode(PHP_EOL, $e); exit; } function fail($message = '') { \fwrite(\STDERR, $message . \PHP_EOL); exit(1); }