PHP Classes

File: includes/src/vendor/bin/semver

Recommend this page to a friend!
  Classes of Subin Siby   Lobby   includes/src/vendor/bin/semver   Download  
File: includes/src/vendor/bin/semver
Role: Example script
Content type: text/plain
Description: Example script
Class: Lobby
Web OS to install and run Web applications
Author: By
Last change:
Date: 8 years ago
Size: 3,383 bytes
 

Contents

Class file image Download
#!/usr/bin/env php
<?php

namespace vierbergenlars\SemVer\Application\SemVer;

require
__DIR__ . '/../vendor/autoload.php';

use
vierbergenlars\SemVer\version;
use
vierbergenlars\SemVer\expression;
use
vierbergenlars\SemVer\SemVerException;

$version = false;
$range = array();
$increment = false;

// Get all arguments
while (\count($argv) > 0) {
   
$arg = \array_shift($argv);
    switch (
$arg) {
        case
'-v':
        case
'--version':
           
$version[] = \array_shift($argv);
            break;
        case
'-r':
        case
'--range':
           
$range[] = \array_shift($argv);
            break;
        case
'-i':
        case
'--increment':
           
$increment = \array_shift($argv);
            break;
        case
'-?':
        case
'-h':
        case
'--help':
           
help();
            break;
    }
}
main();

function
help() {
   
$e = array(
       
'Usage: semver -v|--version <version> [options]'
       
, ''
       
, ' -r <range> Test if version satisfies the supplied range.'
       
, ' --range <range>'
       
, ' -i [major|minor|patch|build] Increment the given version number.'
       
, ' --increment [major|minor|patch|build]'
       
, ''
       
, 'Multiple versions or ranges may be supplied.'
       
, ''
       
, 'Program exits successfully if any valid version satisfies'
       
, 'all supplied ranges, and prints all satisfying versions.'
       
, ''
       
, 'If no versions are valid, or ranges are not satisfied,'
       
, 'then exits failure.'
       
, ''
       
, 'Versions are printed in ascending order, so supplying'
       
, 'multiple versions to the utility will just sort them.'
   
);
    echo \
implode(PHP_EOL, $e);
    exit;
}

function
main() {
    global
$version, $range, $increment;
    if (
$increment !== false) {
       
increment($version[0], $increment);
    }
    if (
$version !== false) {
       
filter($version, $range);
    }
   
help();
}

function
fail($message = '') {
   
fwrite(STDERR, $message);
    exit(
1);
}

function
increment($version, $what) {
    if (\
file_exists($version))
       
$version = \file_get_contents($version);
    if (
$version == '-')
       
$version = \fgets(STDIN);
    try {
       
$v = new version($version);
        echo
$v->inc($what);
        exit;
    } catch (
SemVerException $e) {
       
fail($e->getMessage());
    }
}

function
filter($versions, $ranges) {
    if (\
file_exists($versions[0]))
       
$versions = \file($versions[0], \FILE_IGNORE_NEW_LINES | \FILE_SKIP_EMPTY_LINES);
    if (
$versions[0] == '-') {
        unset(
$versions[0]);
        while (
$version = \fgets(\STDIN)) {
           
$versions[] = $version;
        }
    }
   
$matching_versions = array();
    foreach (
$versions as $version) {
       
$ok = true;
        try {
           
$v = new version($version);
            foreach (
$ranges as $range) {
                if (
$v->satisfies(new versionExpression($range)))
                    continue;
               
$ok = false;
                break;
            }
            if (
$ok)
               
$matching_versions[] = $v;
        } catch (
SemVerException $e) {

        }
    }
    \
usort($matching_versions, '\\vierbergenlars\\SemVer\\version::compare');
    foreach (
$matching_versions as $version) {
        echo
$version . PHP_EOL;
    }
    if (\
count($matching_versions) == 0)
       
fail();
    exit;
}