Skip to content
Snippets Groups Projects
Select Git revision
  • 4e2e00db1b0fef1f1132e489121a28f851fa9284
  • master default protected
  • simple-task/7248-eol-check-add-node-22
  • 6877_check_iml_deployment
4 results

check_iml_backup_server

Blame
  • 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.");  
    // ----------------------------------------------------------------------