forked from wpreadme2markdown/wp2md
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPakefile.php
83 lines (62 loc) · 2.63 KB
/
Pakefile.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
pake_desc('Build phar archive');
pake_task('phar');
function exec_composer($path)
{
$prev_dir = getcwd();
chdir($path);
$composer = `which composer`;
if (empty($composer)) {
// official composer installation guide from https://getcomposer.org/download/
copy('https://getcomposer.org/installer', 'composer-setup.php');
if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') {
echo 'Installer verified';
} else {
echo 'Installer corrupt';
}
echo PHP_EOL;
pake_sh('/usr/bin/env php composer-setup.php');
unlink('composer-setup.php');
$composer = 'php composer.phar';
}
$composer = trim($composer);
pake_sh("$composer update --no-dev -o");
chdir($prev_dir);
}
function run_phar()
{
$build_dir = __DIR__ . '/build';
pake_echo_action('phar', 'prepare build dir');
pake_mkdirs($build_dir);
pake_remove(pakeFinder::type('file')->name('*'), $build_dir);
// project files
pake_mirror(pakeFinder::type('file')->name('*.php'), __DIR__ . '/bin', $build_dir . '/bin');
pake_mirror(pakeFinder::type('file')->name('*.php'), __DIR__ . '/src', $build_dir . '/src');
// make clean library installation without dev dependencies
pake_copy(__DIR__ . '/composer.json', $build_dir . '/composer.json');
exec_composer($build_dir);
pake_echo_action('phar', 'set product version');
// Versions
$bin_file = file_get_contents($build_dir . '/bin/wp2md.php');
// App version
$version = trim(pake_sh('git describe --tags HEAD'));
$bin_file = preg_replace('/@package_version@/', $version, $bin_file);
// Lib version
$lock_file = json_decode(file_get_contents($build_dir . '/composer.lock'), true);
foreach ($lock_file['packages'] as $package) {
if ($package['name'] == 'wpreadme2markdown/wpreadme2markdown') {
$bin_file = preg_replace('/@lib_version@/', $package['version'], $bin_file);
break;
}
}
file_put_contents($build_dir . '/bin/wp2md.php', $bin_file);
pake_echo_action('phar', 'init phar archive');
$phar = new \Secondtruth\Compiler\Compiler($build_dir);
$phar->addDirectory('bin');
$phar->addDirectory('src');
$phar->addDirectory('vendor', array('!*.php', '*Test.php', '*Tester.php', '*/Tests/*'));
$phar->addIndexFile('bin/wp2md.php', 'cli');
$phar->compile($build_dir . '/wp2md.phar');
pake_chmod('wp2md.phar', $build_dir, 0755);
pake_echo_action('phar', 'done. build/wp2md.phar is created');
}