Skip to content

Commit 1c0b8cd

Browse files
committed
Add generate diffs file
1 parent 96ec0fd commit 1c0b8cd

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

generate-diffs.php

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
3+
define('LARAVEL_FOLDER', 'laravel');
4+
define('DIFF_FOLDER', 'diffs');
5+
define('TAGS_FILE', 'tags.txt');
6+
7+
/**
8+
* Generate Diff Files
9+
*
10+
* @param float $v1
11+
* @param float $v2
12+
* @return void
13+
*/
14+
function generateDiffFile($v1, $v2)
15+
{
16+
$file = sprintf('%s/%s...%s.diff', DIFF_FOLDER, $v1, $v2);
17+
18+
if (!file_exists($file)) {
19+
exec(sprintf('git --git-dir %s/.git diff %s %s > %s', LARAVEL_FOLDER, $v1, $v2, $file));
20+
}
21+
}
22+
23+
/**
24+
* Tag version formatter.
25+
*
26+
* @param string $v
27+
* @return string
28+
*/
29+
function versionFormat($version)
30+
{
31+
return str_replace('v', '', $version);
32+
}
33+
34+
if (!file_exists(DIFF_FOLDER)) {
35+
mkdir(DIFF_FOLDER);
36+
}
37+
38+
if (!file_exists(LARAVEL_FOLDER)) {
39+
exec(sprintf('git clone https://github.com/laravel/laravel.git %s', LARAVEL_FOLDER));
40+
}
41+
42+
$versionList = shell_exec(sprintf('git --git-dir %s/.git tag --sort=refname | grep -v "v3\|v4\|v5.0\|v5.1\|v5.2\|v5.3\|v5.4" | cat', LARAVEL_FOLDER));
43+
$versionList = explode(PHP_EOL, trim($versionList));
44+
45+
usort($versionList, function ($v1, $v2) {
46+
return version_compare(versionFormat($v1), versionFormat($v2));
47+
});
48+
49+
file_put_contents(TAGS_FILE, implode(PHP_EOL, $versionList));
50+
51+
foreach ($versionList as $index => $baseVersion) {
52+
echo $baseVersion.PHP_EOL;
53+
54+
$latestVersion = null;
55+
56+
foreach ($versionList as $version) {
57+
if ($version === $baseVersion) {
58+
continue;
59+
}
60+
61+
if (explode('.', $version)[0] != explode('.', $baseVersion)[0]) {
62+
continue;
63+
}
64+
65+
if (version_compare(versionFormat($baseVersion), versionFormat($version)) === 1) {
66+
continue;
67+
}
68+
69+
$latestVersion = $version;
70+
71+
generateDiffFile($baseVersion, $version);
72+
}
73+
74+
if (!is_null($latestVersion)) {
75+
$vIndex = array_search($latestVersion, $versionList);
76+
$vIndex++;
77+
78+
if (isset($versionList[$vIndex])) {
79+
generateDiffFile($baseVersion, $versionList[$vIndex]);
80+
};
81+
}
82+
}
83+
84+
echo 'DONE';

0 commit comments

Comments
 (0)