forked from symfony/symfony
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.php
50 lines (39 loc) · 1.62 KB
/
.travis.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
if (4 > $_SERVER['argc']) {
echo "Usage: commit-range branch dir1 dir2 ... dirN\n";
exit(1);
}
$dirs = $_SERVER['argv'];
array_shift($dirs);
$range = array_shift($dirs);
$branch = array_shift($dirs);
$packages = array();
$flags = PHP_VERSION_ID >= 50400 ? JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE : 0;
foreach ($dirs as $dir) {
if (!`git diff --name-only $range -- $dir`) {
continue;
}
echo "$dir\n";
$json = ltrim(file_get_contents($dir.'/composer.json'));
if (null === $package = json_decode($json)) {
passthru("composer validate $dir/composer.json");
exit(1);
}
$package->repositories = array(array(
'type' => 'composer',
'url' => 'file://'.__DIR__.'/',
));
$json = rtrim(json_encode(array('repositories' => $package->repositories), $flags), "\n}").','.substr($json, 1);
file_put_contents($dir.'/composer.json', $json);
passthru("cd $dir && tar -cf package.tar --exclude='package.tar' *");
$package->version = 'master' !== $branch ? $branch.'.x-dev' : 'dev-master';
$package->dist['type'] = 'tar';
$package->dist['url'] = 'file://'.__DIR__."/$dir/package.tar";
$packages[$package->name][$package->version] = $package;
$versions = @file_get_contents('https://packagist.org/packages/'.$package->name.'.json') ?: '{"package":{"versions":[]}}';
$versions = json_decode($versions);
foreach ($versions->package->versions as $version => $package) {
$packages[$package->name] += array($version => $package);
}
}
file_put_contents('packages.json', json_encode(compact('packages'), $flags));