Skip to content

Commit 14f877a

Browse files
committed
Adds php port
1 parent c8c858c commit 14f877a

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

composer-lock-diff.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env php
2+
<?php
3+
4+
print "production packages\n===================\n";
5+
print_pkgs(diff('packages'));
6+
7+
print "\ndev packages\n============\n";
8+
print_pkgs(diff('packages-dev'));
9+
10+
function diff($key) {
11+
12+
$pkgs = array();
13+
14+
$lines = '';
15+
exec('git show HEAD:composer.lock', $lines);
16+
$data = json_decode(implode("\n", $lines));
17+
18+
foreach($data->$key as $pkg) {
19+
$pkgs[$pkg->name] = array($pkg->version, 'REMOVED');
20+
}
21+
22+
$data = json_decode(file_get_contents('composer.lock'));
23+
24+
foreach($data->$key as $pkg) {
25+
if (! array_key_exists($pkg->name, $pkgs)) {
26+
$pkgs[$pkg->name] = array('NEW', $pkg->version);
27+
continue;
28+
}
29+
30+
if ($pkgs[$pkg->name][0] == $pkg->version) {
31+
unset($pkgs[$pkg->name]);
32+
} else {
33+
$pkgs[$pkg->name][1] = $pkg->version;
34+
}
35+
}
36+
37+
return $pkgs;
38+
}
39+
40+
function print_pkgs($pkgs) {
41+
42+
$pkg_width = max(array_map('strlen', array_keys($pkgs))) + 1;
43+
$before_width = max(array_map('strlen', array_map(function($v) { return $v[0]; }, $pkgs)));
44+
foreach($pkgs as $name => $v) {
45+
printf("%-{$pkg_width}s %-{$before_width}s => %s\n", $name, $v[0], $v[1]);
46+
}
47+
}
48+

0 commit comments

Comments
 (0)