xref: /plugin/davcal/vendor/sabre/dav/bin/build.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler#!/usr/bin/env php
2*a1a3b679SAndreas Boehler<?php
3*a1a3b679SAndreas Boehler
4*a1a3b679SAndreas Boehler$tasks = [
5*a1a3b679SAndreas Boehler
6*a1a3b679SAndreas Boehler    'buildzip' => [
7*a1a3b679SAndreas Boehler        'init', 'test', 'clean',
8*a1a3b679SAndreas Boehler    ],
9*a1a3b679SAndreas Boehler    'markrelease' => [
10*a1a3b679SAndreas Boehler        'init', 'test', 'clean',
11*a1a3b679SAndreas Boehler    ],
12*a1a3b679SAndreas Boehler    'clean' => [],
13*a1a3b679SAndreas Boehler    'test' => [
14*a1a3b679SAndreas Boehler        'composerupdate',
15*a1a3b679SAndreas Boehler    ],
16*a1a3b679SAndreas Boehler    'init' => [],
17*a1a3b679SAndreas Boehler    'composerupdate' => [],
18*a1a3b679SAndreas Boehler ];
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler$default = 'buildzip';
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler$baseDir = __DIR__ . '/../';
23*a1a3b679SAndreas Boehlerchdir($baseDir);
24*a1a3b679SAndreas Boehler
25*a1a3b679SAndreas Boehler$currentTask = $default;
26*a1a3b679SAndreas Boehlerif ($argc > 1) $currentTask = $argv[1];
27*a1a3b679SAndreas Boehler$version = null;
28*a1a3b679SAndreas Boehlerif ($argc > 2) $version = $argv[2];
29*a1a3b679SAndreas Boehler
30*a1a3b679SAndreas Boehlerif (!isset($tasks[$currentTask])) {
31*a1a3b679SAndreas Boehler    echo "Task not found: ",  $currentTask, "\n";
32*a1a3b679SAndreas Boehler    die(1);
33*a1a3b679SAndreas Boehler}
34*a1a3b679SAndreas Boehler
35*a1a3b679SAndreas Boehler// Creating the dependency graph
36*a1a3b679SAndreas Boehler$newTaskList = [];
37*a1a3b679SAndreas Boehler$oldTaskList = [$currentTask => true];
38*a1a3b679SAndreas Boehler
39*a1a3b679SAndreas Boehlerwhile(count($oldTaskList)>0) {
40*a1a3b679SAndreas Boehler
41*a1a3b679SAndreas Boehler    foreach($oldTaskList as $task=>$foo) {
42*a1a3b679SAndreas Boehler
43*a1a3b679SAndreas Boehler        if (!isset($tasks[$task])) {
44*a1a3b679SAndreas Boehler            echo "Dependency not found: " . $task, "\n";
45*a1a3b679SAndreas Boehler            die(1);
46*a1a3b679SAndreas Boehler        }
47*a1a3b679SAndreas Boehler        $dependencies = $tasks[$task];
48*a1a3b679SAndreas Boehler
49*a1a3b679SAndreas Boehler        $fullFilled = true;
50*a1a3b679SAndreas Boehler        foreach($dependencies as $dependency) {
51*a1a3b679SAndreas Boehler            if (isset($newTaskList[$dependency])) {
52*a1a3b679SAndreas Boehler                // Already in the fulfilled task list.
53*a1a3b679SAndreas Boehler                continue;
54*a1a3b679SAndreas Boehler            } else {
55*a1a3b679SAndreas Boehler                $oldTaskList[$dependency] = true;
56*a1a3b679SAndreas Boehler                $fullFilled = false;
57*a1a3b679SAndreas Boehler            }
58*a1a3b679SAndreas Boehler
59*a1a3b679SAndreas Boehler        }
60*a1a3b679SAndreas Boehler        if ($fullFilled) {
61*a1a3b679SAndreas Boehler            unset($oldTaskList[$task]);
62*a1a3b679SAndreas Boehler            $newTaskList[$task] = 1;
63*a1a3b679SAndreas Boehler        }
64*a1a3b679SAndreas Boehler
65*a1a3b679SAndreas Boehler    }
66*a1a3b679SAndreas Boehler
67*a1a3b679SAndreas Boehler}
68*a1a3b679SAndreas Boehler
69*a1a3b679SAndreas Boehlerforeach(array_keys($newTaskList) as $task) {
70*a1a3b679SAndreas Boehler
71*a1a3b679SAndreas Boehler    echo "task: " . $task, "\n";
72*a1a3b679SAndreas Boehler    call_user_func($task);
73*a1a3b679SAndreas Boehler    echo "\n";
74*a1a3b679SAndreas Boehler
75*a1a3b679SAndreas Boehler}
76*a1a3b679SAndreas Boehler
77*a1a3b679SAndreas Boehlerfunction init() {
78*a1a3b679SAndreas Boehler
79*a1a3b679SAndreas Boehler    global $version;
80*a1a3b679SAndreas Boehler    if (!$version) {
81*a1a3b679SAndreas Boehler        include __DIR__ . '/../vendor/autoload.php';
82*a1a3b679SAndreas Boehler        $version = Sabre\DAV\Version::VERSION;
83*a1a3b679SAndreas Boehler    }
84*a1a3b679SAndreas Boehler
85*a1a3b679SAndreas Boehler    echo "  Building sabre/dav " . $version, "\n";
86*a1a3b679SAndreas Boehler
87*a1a3b679SAndreas Boehler}
88*a1a3b679SAndreas Boehler
89*a1a3b679SAndreas Boehlerfunction clean() {
90*a1a3b679SAndreas Boehler
91*a1a3b679SAndreas Boehler    global $baseDir;
92*a1a3b679SAndreas Boehler    echo "  Removing build files\n";
93*a1a3b679SAndreas Boehler    $outputDir = $baseDir . '/build/SabreDAV';
94*a1a3b679SAndreas Boehler    if (is_dir($outputDir)) {
95*a1a3b679SAndreas Boehler        system('rm -r ' . $baseDir . '/build/SabreDAV');
96*a1a3b679SAndreas Boehler    }
97*a1a3b679SAndreas Boehler
98*a1a3b679SAndreas Boehler}
99*a1a3b679SAndreas Boehler
100*a1a3b679SAndreas Boehlerfunction composerupdate() {
101*a1a3b679SAndreas Boehler
102*a1a3b679SAndreas Boehler    global $baseDir;
103*a1a3b679SAndreas Boehler    echo "  Updating composer packages to latest version\n\n";
104*a1a3b679SAndreas Boehler    system('cd ' . $baseDir . '; composer update');
105*a1a3b679SAndreas Boehler}
106*a1a3b679SAndreas Boehler
107*a1a3b679SAndreas Boehlerfunction test() {
108*a1a3b679SAndreas Boehler
109*a1a3b679SAndreas Boehler    global $baseDir;
110*a1a3b679SAndreas Boehler
111*a1a3b679SAndreas Boehler    echo "  Running all unittests.\n";
112*a1a3b679SAndreas Boehler    echo "  This may take a while.\n\n";
113*a1a3b679SAndreas Boehler    system(__DIR__ . '/phpunit --configuration ' . $baseDir . '/tests/phpunit.xml --stop-on-failure', $code);
114*a1a3b679SAndreas Boehler    if ($code != 0) {
115*a1a3b679SAndreas Boehler        echo "PHPUnit reported error code $code\n";
116*a1a3b679SAndreas Boehler        die(1);
117*a1a3b679SAndreas Boehler    }
118*a1a3b679SAndreas Boehler
119*a1a3b679SAndreas Boehler}
120*a1a3b679SAndreas Boehler
121*a1a3b679SAndreas Boehlerfunction buildzip() {
122*a1a3b679SAndreas Boehler
123*a1a3b679SAndreas Boehler    global $baseDir, $version;
124*a1a3b679SAndreas Boehler    echo "  Generating composer.json\n";
125*a1a3b679SAndreas Boehler
126*a1a3b679SAndreas Boehler    $input = json_decode(file_get_contents(__DIR__ . '/../composer.json'), true);
127*a1a3b679SAndreas Boehler    $newComposer = [
128*a1a3b679SAndreas Boehler        "require" => $input['require'],
129*a1a3b679SAndreas Boehler        "config"  => [
130*a1a3b679SAndreas Boehler            "bin-dir" => "./bin",
131*a1a3b679SAndreas Boehler        ],
132*a1a3b679SAndreas Boehler        "prefer-stable" => true,
133*a1a3b679SAndreas Boehler        "minimum-stability" => "alpha",
134*a1a3b679SAndreas Boehler    ];
135*a1a3b679SAndreas Boehler    unset(
136*a1a3b679SAndreas Boehler        $newComposer['require']['sabre/vobject'],
137*a1a3b679SAndreas Boehler        $newComposer['require']['sabre/http'],
138*a1a3b679SAndreas Boehler        $newComposer['require']['sabre/uri'],
139*a1a3b679SAndreas Boehler        $newComposer['require']['sabre/event']
140*a1a3b679SAndreas Boehler    );
141*a1a3b679SAndreas Boehler    $newComposer['require']['sabre/dav'] = $version;
142*a1a3b679SAndreas Boehler    mkdir('build/SabreDAV');
143*a1a3b679SAndreas Boehler    file_put_contents('build/SabreDAV/composer.json', json_encode($newComposer, JSON_PRETTY_PRINT));
144*a1a3b679SAndreas Boehler
145*a1a3b679SAndreas Boehler    echo "  Downloading dependencies\n";
146*a1a3b679SAndreas Boehler    system("cd build/SabreDAV; composer install -n", $code);
147*a1a3b679SAndreas Boehler    if ($code!==0) {
148*a1a3b679SAndreas Boehler        echo "Composer reported error code $code\n";
149*a1a3b679SAndreas Boehler        die(1);
150*a1a3b679SAndreas Boehler    }
151*a1a3b679SAndreas Boehler
152*a1a3b679SAndreas Boehler    echo "  Removing pointless files\n";
153*a1a3b679SAndreas Boehler    unlink('build/SabreDAV/composer.json');
154*a1a3b679SAndreas Boehler    unlink('build/SabreDAV/composer.lock');
155*a1a3b679SAndreas Boehler
156*a1a3b679SAndreas Boehler    echo "  Moving important files to the root of the project\n";
157*a1a3b679SAndreas Boehler
158*a1a3b679SAndreas Boehler    $fileNames = [
159*a1a3b679SAndreas Boehler        'CHANGELOG.md',
160*a1a3b679SAndreas Boehler        'LICENSE',
161*a1a3b679SAndreas Boehler        'README.md',
162*a1a3b679SAndreas Boehler        'examples',
163*a1a3b679SAndreas Boehler    ];
164*a1a3b679SAndreas Boehler    foreach($fileNames as $fileName) {
165*a1a3b679SAndreas Boehler        echo "    $fileName\n";
166*a1a3b679SAndreas Boehler        rename('build/SabreDAV/vendor/sabre/dav/' . $fileName, 'build/SabreDAV/' . $fileName);
167*a1a3b679SAndreas Boehler    }
168*a1a3b679SAndreas Boehler
169*a1a3b679SAndreas Boehler    // <zip destfile="build/SabreDAV-${sabredav.version}.zip" basedir="build/SabreDAV" prefix="SabreDAV/" />
170*a1a3b679SAndreas Boehler
171*a1a3b679SAndreas Boehler    echo "\n";
172*a1a3b679SAndreas Boehler    echo "Zipping the sabredav distribution\n\n";
173*a1a3b679SAndreas Boehler    system('cd build; zip -qr sabredav-' . $version . '.zip SabreDAV');
174*a1a3b679SAndreas Boehler
175*a1a3b679SAndreas Boehler    echo "Done.";
176*a1a3b679SAndreas Boehler
177*a1a3b679SAndreas Boehler}
178