Chris@0
|
1 #!/usr/bin/env php
|
Chris@0
|
2 <?php
|
Chris@0
|
3 /**
|
Chris@0
|
4 * Build a PHPCS phar.
|
Chris@0
|
5 *
|
Chris@0
|
6 * PHP version 5
|
Chris@0
|
7 *
|
Chris@0
|
8 * @category PHP
|
Chris@0
|
9 * @package PHP_CodeSniffer
|
Chris@0
|
10 * @author Benjamin Pearson <bpearson@squiz.com.au>
|
Chris@0
|
11 * @author Greg Sherwood <gsherwood@squiz.net>
|
Chris@0
|
12 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
|
Chris@0
|
13 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
|
Chris@0
|
14 * @link http://pear.php.net/package/PHP_CodeSniffer
|
Chris@0
|
15 */
|
Chris@0
|
16
|
Chris@0
|
17 error_reporting(E_ALL | E_STRICT);
|
Chris@0
|
18
|
Chris@0
|
19 if (ini_get('phar.readonly') === '1') {
|
Chris@0
|
20 echo 'Unable to build, phar.readonly in php.ini is set to read only.'.PHP_EOL;
|
Chris@0
|
21 exit(1);
|
Chris@0
|
22 }
|
Chris@0
|
23
|
Chris@17
|
24 $scripts = [
|
Chris@17
|
25 'phpcs',
|
Chris@17
|
26 'phpcbf',
|
Chris@17
|
27 ];
|
Chris@0
|
28
|
Chris@0
|
29 foreach ($scripts as $script) {
|
Chris@0
|
30 echo "Building $script phar".PHP_EOL;
|
Chris@0
|
31
|
Chris@17
|
32 $pharName = $script.'.phar';
|
Chris@17
|
33 $pharFile = getcwd().'/'.$pharName;
|
Chris@0
|
34 echo "\t=> $pharFile".PHP_EOL;
|
Chris@0
|
35 if (file_exists($pharFile) === true) {
|
Chris@0
|
36 echo "\t** file exists, removing **".PHP_EOL;
|
Chris@0
|
37 unlink($pharFile);
|
Chris@0
|
38 }
|
Chris@0
|
39
|
Chris@17
|
40 $phar = new Phar($pharFile, 0, $pharName);
|
Chris@0
|
41
|
Chris@17
|
42 /*
|
Chris@17
|
43 Add the files.
|
Chris@17
|
44 */
|
Chris@17
|
45
|
Chris@17
|
46 echo "\t=> adding files... ";
|
Chris@17
|
47
|
Chris@17
|
48 $srcDir = realpath(__DIR__.'/../src');
|
Chris@17
|
49 $srcDirLen = strlen($srcDir);
|
Chris@17
|
50
|
Chris@17
|
51 $rdi = new \RecursiveDirectoryIterator($srcDir, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS);
|
Chris@17
|
52 $di = new \RecursiveIteratorIterator($rdi, 0, \RecursiveIteratorIterator::CATCH_GET_CHILD);
|
Chris@17
|
53
|
Chris@17
|
54 foreach ($di as $file) {
|
Chris@17
|
55 $filename = $file->getFilename();
|
Chris@17
|
56
|
Chris@17
|
57 // Skip hidden files.
|
Chris@17
|
58 if (substr($filename, 0, 1) === '.') {
|
Chris@17
|
59 continue;
|
Chris@17
|
60 }
|
Chris@17
|
61
|
Chris@17
|
62 $fullpath = $file->getPathname();
|
Chris@17
|
63 if (strpos($fullpath, '/Tests/') !== false) {
|
Chris@17
|
64 continue;
|
Chris@17
|
65 }
|
Chris@17
|
66
|
Chris@17
|
67 $path = 'src'.substr($fullpath, $srcDirLen);
|
Chris@17
|
68
|
Chris@17
|
69 $phar->addFromString($path, php_strip_whitespace($fullpath));
|
Chris@17
|
70 }
|
Chris@17
|
71
|
Chris@17
|
72 // Add autoloader.
|
Chris@17
|
73 $phar->addFromString('autoload.php', php_strip_whitespace(realpath(__DIR__.'/../autoload.php')));
|
Chris@17
|
74
|
Chris@17
|
75 // Add licence file.
|
Chris@17
|
76 $phar->addFromString('licence.txt', php_strip_whitespace(realpath(__DIR__.'/../licence.txt')));
|
Chris@17
|
77
|
Chris@0
|
78 echo 'done'.PHP_EOL;
|
Chris@0
|
79
|
Chris@17
|
80 /*
|
Chris@17
|
81 Add the stub.
|
Chris@17
|
82 */
|
Chris@17
|
83
|
Chris@0
|
84 echo "\t=> adding stub... ";
|
Chris@0
|
85 $stub = '#!/usr/bin/env php'."\n";
|
Chris@0
|
86 $stub .= '<?php'."\n";
|
Chris@17
|
87 $stub .= 'Phar::mapPhar(\''.$pharName.'\');'."\n";
|
Chris@17
|
88 $stub .= 'require_once "phar://'.$pharName.'/autoload.php";'."\n";
|
Chris@17
|
89 $stub .= '$runner = new PHP_CodeSniffer\Runner();'."\n";
|
Chris@17
|
90 $stub .= '$exitCode = $runner->run'.$script.'();'."\n";
|
Chris@17
|
91 $stub .= 'exit($exitCode);'."\n";
|
Chris@0
|
92 $stub .= '__HALT_COMPILER();';
|
Chris@0
|
93 $phar->setStub($stub);
|
Chris@17
|
94
|
Chris@0
|
95 echo 'done'.PHP_EOL;
|
Chris@0
|
96 }//end foreach
|