-
Hahn Axel (hahn) authoredHahn Axel (hahn) authored
installer.php 5.62 KiB
#!/bin/env php
<?php
/*
I N S T A L L E R
*/
require("inc_vars.php");
require("inc_functions.php");
$gitAppmonitor="https://github.com/iml-it/appmonitor.git";
$spcUrl="https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-$myos-$myarchitecture$myosextension";
$doneBuild="__done_build-micro__.txt";
$incfile="$selfdir/src/include_checks.php";
/*
Filename Last Modified Size Download Count
spc-linux-aarch64 2025-02-15 17:30:46 3.4M 451
spc-linux-aarch64.tar.gz 2025-02-15 17:30:46 3.3M 54
spc-linux-x86_64 2025-02-15 17:30:46 3.5M 937
spc-linux-x86_64.tar.gz 2025-02-15 17:30:46 3.3M 282
spc-macos-aarch64 2025-02-15 17:31:40 7.8M 669
spc-macos-aarch64.tar.gz 2025-02-15 17:31:38 3.8M 211
spc-macos-x86_64 2025-02-15 17:31:46 7.8M 463
spc-macos-x86_64.tar.gz 2025-02-15 17:31:45 3.9M 89
spc-windows-x64.exe 2025-02-15 17:30:46 3.9M 551
*/
// ----------------------------------------------------------------------
// MAIN
// ----------------------------------------------------------------------
echo "
\e[1mCLI client\e[0m
DEVELOPMENT ENVIRONMENT
I N S T A L L E R * U P D A T E R
...............................................................................
";
// ----------------------------------------------------------------------
if ($argc > 1) {
parse_str(implode('&', array_slice($argv, 1)), $ARGS);
}
if(isset($ARGS['-h']) || isset($ARGS['--help'])){
echo "
- Get appmonitor sources or updates it
- Get spc binary
- Installations with spc doctor
- Download PHP and libs with spc
- Build Micro sfx with spc
...............................................................................
✨ \e[1mSYNTAX:\e[0m
./installer.php [OPTIONS]
🔷 \e[1mOPTIONS:\e[0m
-h, --help Show this help
-r, --reset Reset; delete created folders of installer and build
";
exit(0);
}
_h1("Init");
_chdir($selfdir);
if(isset($ARGS['-r']) || isset($ARGS['--reset'])){
_h1("Reset data");
_rm($dirBuild);
_rm($dirExternal);
_rm($dirPackages);
_rm($incfile);
}
// ----------------------------------------------------------------------
_h1("Create directories");
_mkdir($dirExternal);
_mkdir("$dirExternal/bin");
_mkdir($dirBuild);
// ----------------------------------------------------------------------
_h1("Get / update Appmonitor repo");
_chdir("$selfdir/$dirExternal");
if(!is_dir("appmonitor")){
_exec("git clone $gitAppmonitor");
} else {
_chdir("$selfdir/$dirExternal/appmonitor");
_exec("git pull -f $gitAppmonitor");
}
// ----------------------------------------------------------------------
_h1("Generate include file with all available checks...");
// _exec("ln -s $selfdir/$dirExternal/appmonitor/public_html/client $selfdir/src");
_chdir("$selfdir");
$aFiles2Merge=array_merge(
[
"$dirExternal/appmonitor/public_html/client/classes/appmonitor-checks.class.php",
"$dirExternal/appmonitor/public_html/client/classes/appmonitor-client.class.php",
"$dirExternal/appmonitor/public_html/client/classes/validateparam.class.php",
// "$dirExternal/appmonitor/public_html/client/classes/validateparam.settings.php",
],
glob("$dirExternal/appmonitor/public_html/client/plugins/checks/*php")
);
$out="<?php
/*
This file was generated by
".__FILE__."
at ".(date("Y-m-d H:i:s"))."
merged files:
".implode("\n ", $aFiles2Merge)."
*/
";
$sValidationRules=file_get_contents("$dirExternal/appmonitor/public_html/client/classes/validateparam.settings.php");
// echo "$sValidationRules"; die();
foreach($aFiles2Merge as $sMyFile){
$sSource=file_get_contents($sMyFile);
$sSource=preg_replace(
[
"/include 'validateparam.settings.php';/",
"/(require[\ \_].*;)/",
"/(\<\?php)/"
],
[
$sValidationRules,
"// REMOVED-BY-MERGER: $1",
"",
],
$sSource
);
$out.="$sSource\n";
}
if(file_put_contents($incfile, $out)){
_ok("$incfile was written");
}
_exec("php -l \"$incfile\"");
// ----------------------------------------------------------------------
_h1("Get / update spc");
_chdir("$selfdir/$dirExternal/bin");
if(!file_exists($SPC)){
_exec("wget -O $SPC \"$spcUrl\"");
} else {
_skip("download of spc.");
}
if (PHP_OS == "Linux") {
_exec("chmod +x $SPC");
}
// ----------------------------------------------------------------------
_h1("Spc - prepare environment");
_chdir("$selfdir/$dirBuild");
$bDoBild=true;
$sDoneData="PHP version $php_version\nExtensions: $php_libs";
if(file_exists($doneBuild)){
$sDone=file_get_contents($doneBuild);
if (strstr($sDone, $sDoneData)>=0){
$bDoBild=false;
}
}
if ($bDoBild){
_exec("$SPC --no-interaction doctor");
echo "💡 Hint: this can take a minute on a fresh install ...\n";
_exec($cmdSpcDownload);
echo "💡 Hint: this can take 4 minutes on a fresh install or less on module changes ...\n";
_exec($cmdSpcBuild);
file_put_contents("$doneBuild", date("Y-m-d H:i:s") . "\n$sDoneData\n");
} else {
_skip("Micro already built - php $php_version - extensions \"$php_libs\"");
}
_h1("Done. You can run build.php to compile the binary.");
// ----------------------------------------------------------------------