| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package runci.targets;
- import sys.FileSystem;
- import runci.System.*;
- import runci.Config.*;
- class Php {
- static var miscPhpDir(get,never):String;
- static inline function get_miscPhpDir() return miscDir + 'php/';
- static public function getPhpDependencies() {
- var phpCmd = commandResult("php", ["-v"]);
- var phpVerReg = ~/PHP ([0-9]+\.[0-9]+)/i;
- var phpVer = if (phpVerReg.match(phpCmd.stdout))
- Std.parseFloat(phpVerReg.matched(1));
- else
- null;
- if (phpCmd.exitCode == 0 && phpVer != null && phpVer >= 7.0) {
- switch systemName {
- case "Linux":
- var phpInfo = commandResult("php", ["-i"]);
- if(phpInfo.stdout.indexOf("mbstring => enabled") < 0) {
- Linux.requireAptPackages(["php-mbstring"]);
- }
- case _:
- }
- infoMsg('php ${phpVer} has already been installed.');
- return;
- }
- switch systemName {
- case "Linux":
- Linux.requireAptPackages(["php-cli", "php-mbstring"]);
- case "Mac":
- runCommand("brew", ["install", "php"], true);
- case "Windows":
- runCommand("cinst", ["php", "-version", "7.1.8", "-y"], true);
- case _:
- throw 'unknown system: $systemName';
- }
- runCommand("php", ["-v"]);
- }
- static public function run(args:Array<String>) {
- getPhpDependencies();
- changeDirectory(miscPhpDir);
- runCommand("haxe", ["run.hxml"]);
- var binDir = "bin/php";
- var prefixes = [[]];
- if(isCi()) {
- prefixes.push(['-D', 'php-prefix=haxe']);
- prefixes.push(['-D', 'php-prefix=my.pack']);
- }
- for(prefix in prefixes) {
- changeDirectory(unitDir);
- if(isCi()) {
- deleteDirectoryRecursively(binDir);
- }
- runCommand("haxe", ["compile-php.hxml"].concat(prefix).concat(args));
- runThroughPhpVersions(runCommand.bind(_, [binDir + "/index.php"]));
- changeDirectory(sysDir);
- if(isCi()) {
- deleteDirectoryRecursively(binDir);
- }
- runCommand("haxe", ["compile-php.hxml"].concat(prefix).concat(args));
- runThroughPhpVersions(runCommand.bind(_, ["bin/php/Main/index.php"]));
- }
- }
- static function runThroughPhpVersions(fn:(phpCmd:String)->Void) {
- switch [ci, systemName] {
- case [GithubActions, "Linux"]:
- for(version in ['7.1', '7.2', '7.3', '7.4']) {
- fn('php$version');
- }
- case _:
- fn('php');
- }
- }
- }
|