Files
zhamao-framework/bin/phar-build
whale 82a1f86bbd update to 1.2.1
add phar build script
2020-05-02 23:27:26 +08:00

65 lines
16 KiB
PHP
Executable File

#!/usr/bin/env php
<?php /** @since 1.2.1 */
global $version;
echo "version: " . ($version = json_decode(file_get_contents(__DIR__ . "/../composer.json"), true)["version"]) . PHP_EOL;
global $wechat_patch;
$wechat_patch = "PD9waHAKCgpuYW1lc3BhY2UgWk07CgoKdXNlIENvOwp1c2UgRnJhbWV3b3JrXENvbnNvbGU7CnVzZSBGcmFtZXdvcmtcWk1CdWY7CnVzZSBNb2R1bGVcV2VjaGF0UGF0Y2hcV2VjaGF0SGFuZGxlcjsKdXNlIFN3b29sZVxIdHRwXFJlcXVlc3Q7CnVzZSBaTVxBUElcQ1FBUEk7CnVzZSBaTVxDb25uZWN0aW9uXFdTQ29ubmVjdGlvbjsKdXNlIFpNXEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBaTVxFeGNlcHRpb25cV2FpdFRpbWVvdXRFeGNlcHRpb247CnVzZSBaTVxIdHRwXFJlc3BvbnNlOwp1c2UgU3dvb2xlXFdlYlNvY2tldFxGcmFtZTsKdXNlIFN3b29sZVxXZWJTb2NrZXRcU2VydmVyOwp1c2UgWk1cVXRpbHNcWk1VdGlsOwoKYWJzdHJhY3QgY2xhc3MgTW9kQmFzZQp7CiAgICAvKiogQHZhciBTZXJ2ZXIgKi8KICAgIHByb3RlY3RlZCAkc2VydmVyOwogICAgLyoqIEB2YXIgRnJhbWUgKi8KICAgIHByb3RlY3RlZCAkZnJhbWU7CiAgICAvKiogQHZhciBhcnJheSAqLwogICAgcHJvdGVjdGVkICRkYXRhOwogICAgLyoqIEB2YXIgUmVxdWVzdCAqLwogICAgcHJvdGVjdGVkICRyZXF1ZXN0OwogICAgLyoqIEB2YXIgUmVzcG9uc2UgKi8KICAgIHByb3RlY3RlZCAkcmVzcG9uc2U7CiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByb3RlY3RlZCAkZmQ7CiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByb3RlY3RlZCAkd29ya2VyX2lkOwogICAgLyoqIEB2YXIgV1NDb25uZWN0aW9ufFJlc3BvbnNlICovCiAgICBwcm90ZWN0ZWQgJGNvbm5lY3Rpb247CgogICAgcHJvdGVjdGVkICRoYW5kbGVfdHlwZSA9IE1vZEhhbmRsZVR5cGU6OkNRX01FU1NBR0U7CgogICAgcHVibGljICRibG9ja19jb250aW51ZSA9IGZhbHNlOwogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkd3hfcmVwbHkgPSBbXTsKCiAgICAvKiogQHZhciBSZXNwb25zZSAqLwogICAgcHVibGljICR3eF9yZXNwb25zZSA9IG51bGw7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwYXJhbTAgPSBbXSwgJGhhbmRsZV90eXBlID0gMCkgewogICAgICAgIGlmIChpc3NldCgkcGFyYW0wWyJzZXJ2ZXIiXSkpICR0aGlzLT5zZXJ2ZXIgPSAkcGFyYW0wWyJzZXJ2ZXIiXTsKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtMFsiZnJhbWUiXSkpICR0aGlzLT5mcmFtZSA9ICRwYXJhbTBbImZyYW1lIl07CiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbTBbImRhdGEiXSkpICR0aGlzLT5kYXRhID0gJHBhcmFtMFsiZGF0YSJdOwogICAgICAgIGlmIChpc3NldCgkcGFyYW0wWyJyZXF1ZXN0Il0pKSAkdGhpcy0+cmVxdWVzdCA9ICRwYXJhbTBbInJlcXVlc3QiXTsKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtMFsicmVzcG9uc2UiXSkpICR0aGlzLT5yZXNwb25zZSA9ICRwYXJhbTBbInJlc3BvbnNlIl07CiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbTBbImZkIl0pKSAkdGhpcy0+ZmQgPSAkcGFyYW0wWyJmZCJdOwogICAgICAgIGlmIChpc3NldCgkcGFyYW0wWyJ3b3JrZXJfaWQiXSkpICR0aGlzLT53b3JrZXJfaWQgPSAkcGFyYW0wWyJ3b3JrZXJfaWQiXTsKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtMFsiY29ubmVjdGlvbiJdKSkgewogICAgICAgICAgICBpZiAoJHBhcmFtMFsiY29ubmVjdGlvbiJdIGluc3RhbmNlb2YgUmVzcG9uc2UpCiAgICAgICAgICAgICAgICAkdGhpcy0+d3hfcmVzcG9uc2UgPSAkcGFyYW0wWyJjb25uZWN0aW9uIl07CiAgICAgICAgICAgICR0aGlzLT5jb25uZWN0aW9uID0gJHBhcmFtMFsiY29ubmVjdGlvbiJdOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+aGFuZGxlX3R5cGUgPSAkaGFuZGxlX3R5cGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBvbmx5IGNhbiB1c2VkIGJ5IGNxLT5tZXNzYWdlIGV2ZW50IGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gJG1zZwogICAgICogQHBhcmFtIGJvb2wgJHlpZWxkCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXBseSgkbXNnLCAkeWllbGQgPSBmYWxzZSkgewogICAgICAgIHN3aXRjaCAoJHRoaXMtPmRhdGFbIm1lc3NhZ2VfdHlwZSJdKSB7CiAgICAgICAgICAgIGNhc2UgImdyb3VwIjoKICAgICAgICAgICAgY2FzZSAicHJpdmF0ZSI6CiAgICAgICAgICAgIGNhc2UgImRpc2N1c3MiOgogICAgICAgICAgICAgICAgcmV0dXJuIENRQVBJOjpxdWlja19yZXBseSgkdGhpcy0+Y29ubmVjdGlvbiwgJHRoaXMtPmRhdGEsICRtc2csICR5aWVsZCk7CiAgICAgICAgICAgIGNhc2UgIndlY2hhdCI6CiAgICAgICAgICAgICAgICAkdGhpcy0+d3hfcmVwbHkgW10gPSAkbXNnOwogICAgICAgICAgICAgICAgLy9Db25zb2xlOjp3YXJuaW5nKCLlvq7kv6Hlm57lpI3mt7vliqDkuoYiIC4gJG1zZyk7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBmaW5hbFJlcGx5KCRtc2csICR5aWVsZCA9IGZhbHNlKSB7CiAgICAgICAgJHRoaXMtPmJsb2NrX2NvbnRpbnVlID0gdHJ1ZTsKICAgICAgICBpZiAoJG1zZyA9PSAiIikgcmV0dXJuIHRydWU7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXBseSgkbXNnLCAkeWllbGQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkcHJvbXB0CiAgICAgKiBAcGFyYW0gaW50ICR0aW1lb3V0CiAgICAgKiBAcGFyYW0gc3RyaW5nICR0aW1lb3V0X3Byb21wdAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFdhaXRUaW1lb3V0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3YWl0TWVzc2FnZSgkcHJvbXB0ID0gIiIsICR0aW1lb3V0ID0gNjAwLCAkdGltZW91dF9wcm9tcHQgPSAiIikgewogICAgICAgIGlmICgkcHJvbXB0ICE9ICIiKSAkdGhpcy0+cmVwbHkoJHByb21wdCk7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVsidXNlcl9pZCJdLCAkdGhpcy0+ZGF0YVsibWVzc2FnZSJdLCAkdGhpcy0+ZGF0YVsic2VsZl9pZCJdKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigi5Y2P56iL562J5b6F5Y+C5pWw57y65aSxIik7CiAgICAgICAgaWYgKCgkdGhpcy0+ZGF0YVsibWVzc2FnZV90eXBlIl0gPz8gbnVsbCkgPT0gIndlY2hhdCIpIHsKICAgICAgICAgICAgQ29uc29sZTo6d2FybmluZygi5b2T5YmNZmTvvJoiIC4gJHRoaXMtPmNvbm5lY3Rpb24tPmZkKTsKICAgICAgICAgICAgJHRoaXMtPnByb2Nlc3NXWFJlc3BvbnNlKCk7CiAgICAgICAgICAgICR0aGlzLT53eF9yZXNwb25zZSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT53eF9yZXBseSA9IFtdOwogICAgICAgIH0KICAgICAgICAkY2lkID0gQ286OmdldHVpZCgpOwogICAgICAgICRhcGlfaWQgPSBaTUJ1Zjo6JGF0b21pY3NbIndhaXRfbXNnX2lkIl0tPmdldCgpOwogICAgICAgIFpNQnVmOjokYXRvbWljc1sid2FpdF9tc2dfaWQiXS0+YWRkKDEpOwogICAgICAgICRoYW5nID0gWwogICAgICAgICAgICAiY29yb3V0aW5lIiA9PiAkY2lkLAogICAgICAgICAgICAidXNlcl9pZCIgPT4gJHRoaXMtPmRhdGFbInVzZXJfaWQiXSwKICAgICAgICAgICAgIm1lc3NhZ2UiID0+ICR0aGlzLT5kYXRhWyJtZXNzYWdlIl0sCiAgICAgICAgICAgICJzZWxmX2lkIiA9PiAkdGhpcy0+ZGF0YVsic2VsZl9pZCJdLAogICAgICAgICAgICAibWVzc2FnZV90eXBlIiA9PiAkdGhpcy0+ZGF0YVsibWVzc2FnZV90eXBlIl0sCiAgICAgICAgICAgICJyZXN1bHQiID0+IG51bGwKICAgICAgICBdOwogICAgICAgIGlmICgkaGFuZ1sibWVzc2FnZV90eXBlIl0gPT0gImdyb3VwIiB8fCAkaGFuZ1sibWVzc2FnZV90eXBlIl0gPT0gImRpc2N1c3MiKSB7CiAgICAgICAgICAgICRoYW5nWyRoYW5nWyJtZXNzYWdlX3R5cGUiXSAuICJfaWQiXSA9ICR0aGlzLT5kYXRhWyR0aGlzLT5kYXRhWyJtZXNzYWdlX3R5cGUiXSAuICJfaWQiXTsKICAgICAgICB9CiAgICAgICAgWk1CdWY6OmFwcGVuZEtleSgid2FpdF9hcGkiLCAkYXBpX2lkLCAkaGFuZyk7CiAgICAgICAgJGlkID0gc3dvb2xlX3RpbWVyX2FmdGVyKCR0aW1lb3V0ICogMTAwMCwgZnVuY3Rpb24gKCkgdXNlICgkYXBpX2lkLCAkdGltZW91dF9wcm9tcHQpIHsKICAgICAgICAgICAgJHIgPSBaTUJ1Zjo6Z2V0KCJ3YWl0X2FwaSIpWyRhcGlfaWRdID8/IG51bGw7CiAgICAgICAgICAgIGlmICgkciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgQ286OnJlc3VtZSgkclsiY29yb3V0aW5lIl0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgLy9Db25zb2xlOjppbmZvKCLku47ov5nph4zmjILotbfvvZ4iKTsKICAgICAgICBDbzo6c3VzcGVuZCgpOwogICAgICAgIC8vQ29uc29sZTo6aW5mbygi5L+65oGi5aSN5LqG77yBIik7CiAgICAgICAgJHNlc3MgPSBaTUJ1Zjo6Z2V0KCJ3YWl0X2FwaSIpWyRhcGlfaWRdOwogICAgICAgIGlmICgkc2Vzc1sibWVzc2FnZV90eXBlIl0gPT0gIndlY2hhdCIpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbm5lY3Rpb24gPSAkc2Vzc1sid3hfcmVzcG9uc2UiXTsKICAgICAgICAgICAgJHRoaXMtPnd4X3Jlc3BvbnNlID0gJHRoaXMtPmNvbm5lY3Rpb247CiAgICAgICAgICAgIC8vQ29uc29sZTo6d2FybmluZygi5pu/5o2i5ZCO55qEZmTvvJoiLiR0aGlzLT5jb25uZWN0aW9uLT5mZC4i77yM5Zue5aSN55qE5raI5oGv77yaIi4kc2Vzc1sicmVzdWx0Il0pOwogICAgICAgIH0KICAgICAgICBaTUJ1Zjo6dW5zZXRCeVZhbHVlKCJ3YWl0X2FwaSIsICRhcGlfaWQpOwogICAgICAgICRyZXN1bHQgPSAkc2Vzc1sicmVzdWx0Il07CiAgICAgICAgaWYgKGlzc2V0KCRpZCkpIHN3b29sZV90aW1lcl9jbGVhcigkaWQpOwogICAgICAgIGlmICgkcmVzdWx0ID09PSBudWxsKSB0aHJvdyBuZXcgV2FpdFRpbWVvdXRFeGNlcHRpb24oJHRoaXMsICR0aW1lb3V0X3Byb21wdCk7CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJGFyZwogICAgICogQHBhcmFtICRtb2RlCiAgICAgKiBAcGFyYW0gJHByb21wdF9tc2cKICAgICAqIEByZXR1cm4gbWl4ZWR8c3RyaW5nCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogQHRocm93cyBXYWl0VGltZW91dEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXJncygmJGFyZywgJG1vZGUsICRwcm9tcHRfbXNnKSB7CiAgICAgICAgc3dpdGNoICgkbW9kZSkgewogICAgICAgICAgICBjYXNlIFpNX01BVENIX0FMTDoKICAgICAgICAgICAgICAgICRwID0gJGFyZzsKICAgICAgICAgICAgICAgIGFycmF5X3NoaWZ0KCRwKTsKICAgICAgICAgICAgICAgIHJldHVybiB0cmltKGltcGxvZGUoIiAiLCAkcCkpID09ICIiID8gJHRoaXMtPndhaXRNZXNzYWdlKCRwcm9tcHRfbXNnKSA6IHRyaW0oaW1wbG9kZSgiICIsICRwKSk7CiAgICAgICAgICAgIGNhc2UgWk1fTUFUQ0hfTlVNQkVSOgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZyBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCR2KSkgewogICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJGFyZywgJGssIDEpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53YWl0TWVzc2FnZSgkcHJvbXB0X21zZyk7CiAgICAgICAgICAgIGNhc2UgWk1fTUFUQ0hfRklSU1Q6CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGFyZ1sxXSkpIHsKICAgICAgICAgICAgICAgICAgICAkYSA9ICRhcmdbMV07CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfc3BsaWNlKCRhcmcsIDEsIDEpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkYTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53YWl0TWVzc2FnZSgkcHJvbXB0X21zZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWVzc2FnZSgpIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbIm1lc3NhZ2UiXSA/PyBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VySWQoKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWyJ1c2VyX2lkIl0gPz8gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0R3JvdXBJZCgpIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbImdyb3VwX2lkIl0gPz8gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWVzc2FnZVR5cGUoKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWyJtZXNzYWdlX3R5cGUiXSA/PyBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSb2JvdElkKCkgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsic2VsZl9pZCJdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25uZWN0aW9uKCkgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29ubmVjdGlvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0QmxvY2soJHJlc3VsdCA9IHRydWUpIHsKICAgICAgICAkdGhpcy0+YmxvY2tfY29udGludWUgPSAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBmb3JtYXRXWFJlcGx5KCkgewogICAgICAgIGlmICgkdGhpcy0+d3hfcmVwbHkgPT0gW10pIHJldHVybiAiIjsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGxzID0gW107CiAgICAgICAgICAgICRoYXZlX2ltYWdlID0gZmFsc2U7CiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT53eF9yZXBseSBhcyAkdikgewogICAgICAgICAgICAgICAgd2hpbGUgKCgkY3EgPSBaTVV0aWw6OmdldENRKCR2KSkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGNxWyJ0eXBlIl0gPT0gImltYWdlIiAmJiAoc3Vic3RyKCRjcVsicGFyYW1zIl1bImZpbGUiXSwgMCwgNykgPT0gImh0dHA6Ly8iIHx8IHN1YnN0cigkY3FbInBhcmFtcyJdWyJmaWxlIl0sIDAsIDgpID09ICJodHRwczovLyIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2ID0gc3RyX3JlcGxhY2UobWJfc3Vic3RyKCR2LCAkY3FbInN0YXJ0Il0sICRjcVsiZW5kIl0gLSAkY3FbInN0YXJ0Il0gKyAxKSwgIjxpbWcgc3JjPSciIC4gJGNxWyJwYXJhbXMiXVsiZmlsZSJdIC4gIic+IiwgJHYpOwogICAgICAgICAgICAgICAgICAgICAgICAkaGF2ZV9pbWFnZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHYgPSBzdHJfcmVwbGFjZShtYl9zdWJzdHIoJHYsICRjcVsic3RhcnQiXSwgJGNxWyJlbmQiXSAtICRjcVsic3RhcnQiXSArIDEpLCAiICAiLCAkdik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGxzIFtdID0gJHY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRoYXZlX2ltYWdlID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkbXNncyA9IGltcGxvZGUoIlxuXG4iLCAkbHMpOwogICAgICAgICAgICAgICAgJGtleSA9IG1kNSgkbXNncyk7CiAgICAgICAgICAgICAgICBaTUJ1Zjo6YXBwZW5kS2V5KCJodG1sX2NvbnRlbnQiLCAka2V5LCAiPGh0bWwgbGFuZz1cImVuXCI+PGhlYWQ+PG1ldGEgY2hhcnNldD0ndXRmLTgnPjx0aXRsZT48L3RpdGxlPjwvaGVhZD48Ym9keT48cHJlPiIgLiAkbXNncyAuICI8L3ByZT48L2JvZHk+PC9odG1sPiIpOwogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yZXBseVdlY2hhdE5ld3MoIueCueWHu+afpeeciyIsICLlpJrlqpLkvZPmtojmga8iLCAiIiwgV2VjaGF0SGFuZGxlcjo6V1hfSFRUUF9BRERSIC4gJGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1zZyA9IGltcGxvZGUoIlxuXG4iLCAkbHMpOwogICAgICAgICAgICAkdXNlcl9pZCA9ICI8IVtDREFUQVsiIC4gJHRoaXMtPmRhdGFbInVzZXJfaWQiXSAuICJdXT4iOwogICAgICAgICAgICAkZnJvbSA9ICI8IVtDREFUQVsiLiR0aGlzLT5kYXRhWyJzZWxmX2lkIl0uIl1dPiI7CiAgICAgICAgICAgICR0eXBlID0gIjwhW0NEQVRBW3RleHRdXT4iOwogICAgICAgICAgICAkY29udGVudCA9ICI8IVtDREFUQVsiIC4gJG1zZyAuICJdXT4iOwogICAgICAgICAgICAkdGhpcy0+d3hfcmVwbHkgPSBbXTsKICAgICAgICAgICAgLyoqIEBub2luc3BlY3Rpb24gSHRtbERlcHJlY2F0ZWRUYWcgKi8KICAgICAgICAgICAgcmV0dXJuICJcbjx4bWw+PFRvVXNlck5hbWU+JHVzZXJfaWQ8L1RvVXNlck5hbWU+PEZyb21Vc2VyTmFtZT4kZnJvbTwvRnJvbVVzZXJOYW1lPjxDcmVhdGVUaW1lPiIgLiB0aW1lKCkgLiAiPC9DcmVhdGVUaW1lPjxNc2dUeXBlPiR0eXBlPC9Nc2dUeXBlPjxDb250ZW50PiRjb250ZW50PC9Db250ZW50PjwveG1sPiI7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICog55So5Zu+5paH5L+h5oGv5pa55byP5Zue5aSN5b6u5L+h5raI5oGvCiAgICAgKiBAcGFyYW0gJHRpdGxlCiAgICAgKiBAcGFyYW0gJGRlc2NyaXB0aW9uCiAgICAgKiBAcGFyYW0gJHBpY191cmwKICAgICAqIEBwYXJhbSAkdXJsCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcGx5V2VjaGF0TmV3cygkdGl0bGUsICRkZXNjcmlwdGlvbiwgJHBpY191cmwsICR1cmwpIHsKICAgICAgICAvLyR0aGlzLT5zZXRGdW5jdGlvbkNhbGxlZCgpOwogICAgICAgICR1c2VyX2lkID0gIjwhW0NEQVRBWyIgLiAkdGhpcy0+ZGF0YVsidXNlcl9pZCJdIC4gIl1dPiI7CiAgICAgICAgJGZyb20gPSAiPCFbQ0RBVEFbIiAuICR0aGlzLT5kYXRhWyJzZWxmX2lkIl0gLiAiXV0+IjsKICAgICAgICAkdHlwZSA9ICI8IVtDREFUQVtuZXdzXV0+IjsKICAgICAgICAvLyRjb250ZW50ID0gIjwhW0NEQVRBWyIgLiAkbWVkaWFfaWQgLiAiXV0+IjsKICAgICAgICAkdGl0bGUgPSAiPCFbQ0RBVEFbIiAuICR0aXRsZSAuICJdXT4iOwogICAgICAgICRkZXNjcmlwdGlvbiA9ICI8IVtDREFUQVsiIC4gJGRlc2NyaXB0aW9uIC4gIl1dPiI7CiAgICAgICAgJHVybCA9ICI8IVtDREFUQVsiIC4gJHVybCAuICJdXT4iOwogICAgICAgICRwaWNfdXJsID0gIjwhW0NEQVRBWyIgLiAkcGljX3VybCAuICJdXT4iOwogICAgICAgIHJldHVybiAiXG48eG1sPjxUb1VzZXJOYW1lPiR1c2VyX2lkPC9Ub1VzZXJOYW1lPjxGcm9tVXNlck5hbWU+JGZyb208L0Zyb21Vc2VyTmFtZT48Q3JlYXRlVGltZT4iIC4gdGltZSgpIC4gIjwvQ3JlYXRlVGltZT48TXNnVHlwZT4kdHlwZTwvTXNnVHlwZT48QXJ0aWNsZUNvdW50PjE8L0FydGljbGVDb3VudD48QXJ0aWNsZXM+PGl0ZW0+PFRpdGxlPiR0aXRsZTwvVGl0bGU+PERlc2NyaXB0aW9uPiRkZXNjcmlwdGlvbjwvRGVzY3JpcHRpb24+PFBpY1VybD4kcGljX3VybDwvUGljVXJsPjxVcmw+JHVybDwvVXJsPjwvaXRlbT48L0FydGljbGVzPjwveG1sPiI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3NXWFJlc3BvbnNlKCRyYXcgPSAiIikgewogICAgICAgIGlmICgkdGhpcy0+d3hfcmVzcG9uc2UgPT09IG51bGwpIHJldHVybjsKICAgICAgICAvL2Vsc2UgQ29uc29sZTo6aW5mbygi6L+Y6KGM77yM5rKh5Lii77yM6L+Z5Liq55qEZmTmmK8iIC4gJHRoaXMtPnd4X3Jlc3BvbnNlLT5mZCk7CiAgICAgICAgaWYgKCRyYXcgPT0gIiIpIHsKICAgICAgICAgICAgaWYgKCgkcmVwbHkgPSAkdGhpcy0+Zm9ybWF0V1hSZXBseSgpKSAhPT0gIiIpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53eF9yZXNwb25zZS0+ZW5kKCRyZXBseSk7CiAgICAgICAgICAgICAgICBaTUJ1Zjo6JGF0b21pY3NbIm91dF9jb3VudCJdLT5hZGQoMSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3hfcmVzcG9uc2UtPmVuZCgic3VjY2VzcyIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnd4X3Jlc3BvbnNlLT5lbmQoJHJhdyk7CiAgICAgICAgICAgIFpNQnVmOjokYXRvbWljc1sib3V0X2NvdW50Il0tPmFkZCgxKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKSB7CiAgICAgICAgaWYgKCR0aGlzLT53eF9yZXBseSAhPSBbXSkgewogICAgICAgICAgICAkdGhpcy0+cHJvY2Vzc1dYUmVzcG9uc2UoKTsKICAgICAgICB9CiAgICB9Cn0=";
switch ($argv[1] ?? '') {
case '--with-wechat-patch':
build(true);
break;
case '--normal':
build();
break;
case '--help':
case '-h':
default:
echo "\nzhamao-framework Phar builder.\n";
echo "\nUsage: " . $argv[0] . " [OPTION]";
echo "\n\n -h, --help\t\tShow this help menu";
echo "\n --with-wechat-patch\tReplace ModBase with wechat patch version and build your own phar package";
echo "\n --normal\t\tBuild your own phar package as normal options\n\n";
break;
}
function build($with_wechat_patch = false) {
if (ini_get('phar.readonly') == 1) {
die("You need to set \"phar.readonly\" to \"Off\"!\nSee: https://stackoverflow.com/questions/34667606/cant-enable-phar-writing\n");
}
$filename = "server.phar";
@unlink(__DIR__ . '/../resources/' . $filename);
$phar = new Phar(__DIR__ . '/../resources/' . $filename);
$phar->startBuffering();
$src = realpath(__DIR__ . '/../');
$hello = file_get_contents($src . '/src/Module/Example/Hello.php');
$middleware = file_get_contents($src . '/src/Module/Middleware/TimerMiddleware.php');
unlink($src . '/src/Module/Example/Hello.php');
unlink($src . '/src/Module/Middleware/TimerMiddleware.php');
if ($with_wechat_patch) {
global $wechat_patch;
$wechat = base64_decode($wechat_patch);
} else {
$wechat = false;
}
if ($wechat !== false) {
echo "Using wechat patch.\n";
$modbase = file_get_contents($src . '/src/ZM/ModBase.php');
unlink($src . '/src/ZM/ModBase.php');
}
$phar->buildFromDirectory($src);
$phar->addFromString('tmp/Hello.php.bak', $hello);
$phar->addFromString('tmp/TimerMiddleware.php.bak', $middleware);
if ($wechat !== false) {
$phar->addFromString('src/ZM/ModBase.php', $wechat);
file_put_contents($src . '/src/ZM/ModBase.php', $modbase);
}
//$phar->compressFiles(Phar::GZ);
$phar->setStub($phar->createDefaultStub('phar-starter.php'));
$phar->stopBuffering();
file_put_contents($src . '/src/Module/Example/Hello.php', $hello);
file_put_contents($src . '/src/Module/Middleware/TimerMiddleware.php', $middleware);
echo "Successfully built. Location: " . $src . "/resources/$filename\n";
}