Skip to content

Commit 9ba4d73

Browse files
authored
Merge pull request #3 from AngryBytes/feat/upgrade
Feat/upgrade
2 parents a9ea9ee + 3139b34 commit 9ba4d73

30 files changed

+502
-639
lines changed

.github/workflows/php-checks.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
on: [push]
2+
name: PHP checks
3+
jobs:
4+
composer-check:
5+
runs-on: ubuntu-latest
6+
strategy:
7+
matrix:
8+
php-versions: ['7.2', '7.3', '7.4']
9+
name: PHP ${{ matrix.php-versions }} tests
10+
steps:
11+
- name: Checkout
12+
uses: actions/checkout@v2
13+
14+
- name: Setup PHP
15+
uses: shivammathur/setup-php@v2
16+
with:
17+
php-version: ${{ matrix.php-versions }}
18+
tools: cs2pr
19+
20+
- name: Get composer cache directory
21+
id: composer-cache
22+
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
23+
24+
- name: Cache dependencies
25+
uses: actions/cache@v1
26+
with:
27+
path: ${{ steps.composer-cache.outputs.dir }}
28+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
29+
restore-keys: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
30+
31+
- name: Run Composer install
32+
run: composer install --prefer-dist
33+
34+
- name: Run PHP checks
35+
run: composer phpcheck
36+
37+
- name: Run PHPUnit
38+
run: composer phpunit

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/vendor/
22
composer.lock
3+
.phpunit.result.cache

.travis.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Changelog
2+
3+
## 1.1.0
4+
5+
### PHP support
6+
* Dropped support for PHP `7.1` and lower.
7+
* Added support for PHP `7.2`, `7.3` and `7.4`.
8+
9+
### 3rd party updates
10+
* Updated `symfony/finder` to version `4.4`.
11+
12+
## 1.0.4
13+
* Updated `symfony/finder` to version `3.3`.
14+
15+
## 1.0.3
16+
* Re-added the missing `Naneau\ProjectVersioner\Versioner::has($directory)` method.
17+
18+
## 1.0.2
19+
* Added `Naneau\ProjectVersioner\Reader\ComposerJson` for reading versions from a composer.json file.

README.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# PHP Project Versioner
22

3-
[![Latest Stable Version](https://poser.pugx.org/naneau/project-versioner/v/stable.svg)](https://packagist.org/packages/naneau/project-versioner)
4-
[![Build Status](https://travis-ci.org/naneau/php-project-versioner.svg?branch=master)](https://travis-ci.org/naneau/php-project-versioner)
5-
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/naneau/php-project-versioner/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/naneau/php-project-versioner/?branch=master)
3+
[![PHP checks](https://github.com/AngryBytes/php-project-versioner/workflows/PHP%20checks/badge.svg)](https://github.com/AngryBytes/php-project-versioner/actions?query=workflow%3A%22PHP+checks%22)
4+
5+
**Note:** this is a fork of the original project as it appears to be abandoned.
66

77
This is a simple tool to obtain "versions" for projects in PHP.
88

@@ -31,7 +31,7 @@ use Naneau\ProjectVersioner\Versioner;
3131
use Naneau\ProjectVersioner\Reader\Git\Commit\Exec as GitCommitReader;
3232

3333
// Create a versioner
34-
$versioner = new Versioner(array(new GitCommitReader));
34+
$versioner = new Versioner([new GitCommitReader]);
3535

3636
// Short commit hash like "gd8587c8"
3737
$version = $versioner->get('/foo/bar');
@@ -46,7 +46,7 @@ use Naneau\ProjectVersioner\Versioner;
4646
use Naneau\ProjectVersioner\Reader\Git\Tag\Exec as GitTagReader;
4747

4848
// Create a versioner
49-
$versioner = new Versioner(array(new GitTagReader));
49+
$versioner = new Versioner([new GitTagReader]);
5050

5151
// Last tag
5252
$version = $versioner->get('/foo/bar');
@@ -61,7 +61,7 @@ use Naneau\ProjectVersioner\Versioner;
6161
use Naneau\ProjectVersioner\Reader\Git\Tag\Exec as GitTagReader;
6262

6363
// Create a versioner
64-
$versioner = new Versioner(array(new GitTagReader));
64+
$versioner = new Versioner([new GitTagReader]);
6565

6666
// Last tag + commit info, like 4.3.2-9-gd504031
6767
$version = $versioner->get('/foo/bar');
@@ -78,10 +78,10 @@ use Naneau\ProjectVersioner\Versioner;
7878
use Naneau\ProjectVersioner\Reader\File as FileReader;
7979

8080
// Create a versioner
81-
$versioner = new Versioner(array(
81+
$versioner = new Versioner([
8282
// Reader for "VERSION" file
8383
new FileReader('VERSION')
84-
));
84+
]);
8585

8686
// Retrieve version from versioner
8787
$version = $versioner->get('/foo/bar');
@@ -96,9 +96,9 @@ use Naneau\ProjectVersioner\Versioner;
9696
use Naneau\ProjectVersioner\Reader\Finder\MTime as MTimeReader;
9797

9898
// Create a versioner
99-
$versioner = new Versioner(array(
99+
$versioner = new Versioner([
100100
new MTimeReader('*.txt') // Look at all *.txt files
101-
));
101+
]);
102102

103103
// Highest mtime, like 1410806782
104104
$version = $versioner->get('/foo/bar');
@@ -112,9 +112,9 @@ Using a different reader it is possible to use the *contents* of the files found
112112
use Naneau\ProjectVersioner\Versioner;
113113
use Naneau\ProjectVersioner\Reader\Finder\Contents as ContentsReader;
114114

115-
$versioner = new Versioner(array(
115+
$versioner = new Versioner([
116116
new ContentsReader('*.jpg')
117-
));
117+
]);
118118

119119
// Short hash of file contents, like gd504031
120120
$version = $versioner->get('/foo/bar');
@@ -132,7 +132,7 @@ To look at all packages combined:
132132
use Naneau\ProjectVersioner\Versioner;
133133
use Naneau\ProjectVersioner\Reader\Composer as ComposerReader;
134134

135-
$versioner = new Versioner(array(new ComposerReader));
135+
$versioner = new Versioner([new ComposerReader]);
136136

137137
// Short hash like "ae9b8a"
138138
$version = $versioner->get('/foo/bar');
@@ -146,9 +146,9 @@ Or, looking for a specific package:
146146
use Naneau\ProjectVersioner\Versioner;
147147
use Naneau\ProjectVersioner\Reader\ComposerPackage as ComposerPackageReader;
148148

149-
$versioner = new Versioner(array(
149+
$versioner = new Versioner([
150150
new ComposerPackageReader('symfony/filesystem')
151-
));
151+
]);
152152

153153
// Composer Version (SemVer) like "v2.5.4"
154154
$version = $versioner->get('/foo/bar');
@@ -165,10 +165,10 @@ use Naneau\ProjectVersioner\Versioner;
165165
use Naneau\ProjectVersioner\Reader\ComposerPackage as ComposerPackageReader;
166166
use Naneau\ProjectVersioner\Reader\Git\Tag\Exec as GitTagReader;
167167

168-
$versioner = new Versioner(array(
168+
$versioner = new Versioner([
169169
new ComposerPackageReader('symfony/filesystem'),
170170
new GitTagReader
171-
));
171+
]);
172172

173173
// First version found
174174
$version = $versioner->get('/foo/bar');

composer.json

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,55 @@
11
{
2-
"name": "naneau/project-versioner",
2+
"name": "angrybytes/project-versioner",
33
"description": "A tool to maintain project/sub-project versions based on Composer, file mtimes, etc.",
44
"license": "MIT",
55
"authors": [
66
{
77
"name": "Maurice Fonk",
88
"email": "maurice@naneau.net"
9+
},
10+
{
11+
"name": "Angry Bytes BV",
12+
"email": "info@angrybytes.com",
13+
"homepage": "https://angrybytes.com/"
914
}
1015
],
11-
16+
"support": {
17+
"email": "support@angrybytes.com"
18+
},
1219
"autoload": {
13-
"psr-4": {"Naneau\\ProjectVersioner\\": "src/Naneau/ProjectVersioner/"}
20+
"psr-4": {
21+
"Naneau\\ProjectVersioner\\": "src/Naneau/ProjectVersioner/",
22+
"Naneau\\ProjectVersioner\\Test\\": "tests/Naneau/ProjectVersioner/Test"
23+
}
24+
},
25+
"config": {
26+
"optimize-autoloader": true,
27+
"sort-packages": true
28+
},
29+
"scripts": {
30+
"phpcheck": [
31+
"./vendor/bin/parallel-lint src/",
32+
"./vendor/bin/phpstan analyse -l max --memory-limit=1G src/",
33+
"./vendor/bin/phpcs -p --standard=PSR2 --extensions=php src/"
34+
],
35+
"phpcbf":[
36+
"./vendor/bin/phpcbf -p --standard=PSR2 --extensions=php src/"
37+
],
38+
"phpunit": [
39+
"./vendor/bin/phpunit"
40+
]
1441
},
15-
1642
"minimum-stability": "stable",
1743
"require": {
18-
"symfony/finder": "~2.5"
44+
"ext-json": "*",
45+
"php": "7.2.* || 7.3.* || 7.4.*",
46+
"symfony/finder": "~4.4"
1947
},
2048
"require-dev": {
21-
"phpunit/phpunit": "~4.2"
49+
"jakub-onderka/php-console-highlighter": "^0.4.0",
50+
"jakub-onderka/php-parallel-lint": "^1.0",
51+
"phpstan/phpstan": "0.12.34",
52+
"phpunit/phpunit": "~8.5",
53+
"squizlabs/php_codesniffer": "^3.5"
2254
}
2355
}

phpunit.xml.dist

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
<phpunit
2-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
4-
backupGlobals="false"
5-
backupStaticAttributes="false"
6-
bootstrap="vendor/autoload.php"
7-
cacheTokens="false"
8-
colors="true"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/8.5/phpunit.xsd"
4+
backupGlobals="false"
5+
backupStaticAttributes="false"
6+
bootstrap="vendor/autoload.php"
7+
colors="true"
98
>
109

1110
<testsuites>
12-
<testsuite name="ProjectVersioner Test Squite">
11+
<testsuite name="ProjectVersioner Test Suite">
1312
<directory>./tests/</directory>
1413
</testsuite>
1514
</testsuites>
Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
<?php
2-
/**
3-
* Composer.php
4-
*
5-
* @package ProjectVersioner
6-
* @subpackage Reader
7-
*/
8-
92
namespace Naneau\ProjectVersioner\Reader;
103

114
use Naneau\ProjectVersioner\ReaderInterface;
@@ -14,29 +7,31 @@
147
* Composer
158
*
169
* Finds version from composer lock file
17-
*
18-
* @category Naneau
19-
* @package ProjectVersioner
20-
* @subpackage Reader
2110
*/
2211
class Composer implements ReaderInterface
2312
{
2413
/**
2514
* {@inheritdoc}
26-
**/
27-
public function canRead($directory)
15+
*/
16+
public function canRead(string $directory): bool
2817
{
2918
return is_readable($directory . '/composer.lock');
3019
}
3120

3221
/**
3322
* {@inheritdoc}
34-
**/
35-
public function read($directory)
23+
*/
24+
public function read(string $directory)
3625
{
26+
$contents = file_get_contents($directory . '/composer.lock');
27+
if (!$contents) {
28+
return null;
29+
}
30+
3731
return substr(
38-
md5(file_get_contents($directory . '/composer.lock')),
39-
0, 6
32+
md5($contents),
33+
0,
34+
6
4035
);
4136
}
4237
}
Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,38 @@
11
<?php
2-
/**
3-
* ComposerJson.php
4-
*
5-
* @package ProjectVersioner
6-
* @subpackage Reader
7-
*/
8-
92
namespace Naneau\ProjectVersioner\Reader;
103

114
use Naneau\ProjectVersioner\ReaderInterface;
125

13-
use \RuntimeException;
14-
use \stdClass;
6+
use stdClass;
157

168
/**
179
* Finds the "version" from the composer.json file
18-
*
19-
* @category Naneau
20-
* @package ProjectVersioner
21-
* @subpackage Reader
2210
*/
2311
class ComposerJson implements ReaderInterface
2412
{
2513
/**
2614
* {@inheritdoc}
27-
**/
28-
public function canRead($directory)
15+
*/
16+
public function canRead(string $directory): bool
2917
{
3018
return is_readable($directory . '/composer.json');
3119
}
3220

3321
/**
3422
* {@inheritdoc}
35-
**/
36-
public function read($directory)
23+
*/
24+
public function read(string $directory)
3725
{
3826
$json = @file_get_contents($directory . '/composer.json');
39-
if ($json === false) {
40-
return false;
27+
if (!$json) {
28+
return null;
4129
}
4230

43-
$json = json_decode($json);
31+
$json = json_decode($json, false);
4432
if (!($json instanceof stdClass) || empty($json->version)) {
45-
return false;
46-
}
33+
return null;
34+
}
4735

48-
return trim($json->version);
36+
return trim($json->version);
4937
}
5038
}

0 commit comments

Comments
 (0)