Skip to content
This repository was archived by the owner on Aug 22, 2023. It is now read-only.

Commit 294bd70

Browse files
committed
Add composer/server and create Version class manage
1 parent 5df2a63 commit 294bd70

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

composer.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
"illuminate/support": "~5",
1717
"cartalyst/sentinel": "2.0.*",
1818
"cyrildewit/eloquent-viewable": "^3.0",
19+
"composer/semver": "^1.4",
1920
"danielme85/laravel-cconverter": "^0.2.1",
2021
"ext-zip": "*",
2122
"ext-json": "*",
2223
"intervention/image": "^2.4",
2324
"intervention/imagecache": "^2.3",
25+
"knplabs/packagist-api": "^1.5",
2426
"laravel/scout": "^7.1",
2527
"league/fractal": "^0.17.0",
2628
"mcamara/laravel-localization": "^1.3",

src/Core/Version.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace Mckenziearts\Shopper\Core;
4+
5+
use Composer\Semver\Semver;
6+
use Composer\Semver\Comparator;
7+
use Composer\Semver\VersionParser;
8+
9+
class Version extends Semver
10+
{
11+
/**
12+
* Normalize the version number.
13+
*
14+
* @param string $version
15+
*
16+
* @return string
17+
*/
18+
public static function normalize($version)
19+
{
20+
$version = preg_replace('/^(v|\^|~)/', '', $version);
21+
if (preg_match('/^\d\.\d$/', $version)) {
22+
$version .= '.0';
23+
}
24+
25+
return $version;
26+
}
27+
/**
28+
* Get the last version number from a list of versions.
29+
*
30+
* @param array $versions
31+
*
32+
* @return string
33+
*/
34+
public static function latest(array $versions)
35+
{
36+
// Normalize version numbers.
37+
$versions = array_map(function ($version) {
38+
return static::normalize($version);
39+
}, $versions);
40+
// Get the highest version number.
41+
$latest = array_reduce($versions, function ($carry, $item) {
42+
// Skip unstable versions.
43+
if (VersionParser::parseStability($item) !== 'stable') {
44+
return $carry;
45+
}
46+
return Comparator::greaterThan($carry, $item) ? $carry : $item;
47+
}, '0.0.0');
48+
49+
return $latest;
50+
}
51+
}

0 commit comments

Comments
 (0)