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

check_eol

Blame
  • inc_functions.php 3.44 KiB
    <?php
    // ----------------------------------------------------------------------
    // SHARED FUNCTIONS FOR INSTALLER AND BUILDER
    // ----------------------------------------------------------------------
    
    $aCol=[
        "reset" => "\e[0m",
        "red" => "\e[31m",
        "green" => "\e[32m",
        "yellow" => "\e[33m",
        "blue" => "\e[34m",
        "magenta" => "\e[35m",
        "cyan" => "\e[36m",
        "light_gray" => "\e[37m",
        "dark_gray" => "\e[90m",
        "light_red" => "\e[91m",
        "light_green" => "\e[92m",
        "light_yellow" => "\e[93m",
        "light_blue" => "\e[94m",
        "light_magenta" => "\e[95m",
    ];
    
    function _h1($s): void
    {
        global $aCol;
        echo "\n$aCol[magenta]>>>>>>>>>> $s$aCol[reset]\n";
        
        /*
        echo "\n   __".str_repeat("_", strlen($s))."\n";
        echo "__/ ".str_repeat(" ", strlen($s))." \___".str_repeat("_", 70-strlen($s))."\n";
        echo "    $s\n";
        echo str_repeat(".", 79)."\n\n";
        */
    }
    function _abort($sMessage, $iExitcode = 1): never
    {
        global $aCol;
        echo "❌ $aCol[red]$sMessage$aCol[reset]\n";
        exit($iExitcode);
    }
    
    function _ok(string $sMessage=""): void
    {
        echo "✅ OK $sMessage\n";
    }
    function _skip(string $sMessage=""): void
    {
        echo "🔹 SKIP: $sMessage\n";
    }
    
    function _chdir($sDir): void
    {
        global $aCol;
        if (!is_dir($sDir)) {
            _abort("Directory '$sDir' not found.");
        }
        chdir($sDir);
        echo "$aCol[cyan]dir # " . getcwd() . "$aCol[reset]\n";
    }
    
    /**
     * Execute shell command and abort if it fails
     * @param mixed $cmd
     * @return void
     */
    function _exec($cmd): void
    {
        global $aCol;
        echo "$aCol[blue]cmd > $cmd$aCol[reset]\n";
        $iStart=microtime(true);
    
        /*
        exec("$cmd 2>&1", $aOut, $rc);
        $iEnd=microtime(true);
        if (!count($aOut)) {
            $aOut = ["-- no output --"];
        }
        echo implode("\n", $aOut) . "\n";
        */
    
        // show output in real-time
        $descriptorspec = [
            0 => ["pipe", "r"],  // stdin
            1 => ["pipe", "w"],  // stdout
            2 => ["pipe", "w"]   // stderr
        ];
        
        $process = proc_open($cmd, $descriptorspec, $pipes);
        
        if (is_resource($process)) {
            // Close stdin pipe
            fclose($pipes[0]);
        
            // Read stdout and stderr in real-time
            while ($output = fgets($pipes[1])) {
                echo "     | $output";
                flush();
            }
            fclose($pipes[1]);
        
            while ($error = fgets($pipes[2])) {
                echo "    2| $error";
                flush();
            }
            fclose($pipes[2]);
        
            // Close the process
            $rc=proc_close($process);
            $iEnd=microtime(true);
        } else {
            _abort("Unable to execute command.");
        }
        
    
        $sTime= "... ⏱️ Time: " . round($iEnd-$iStart, 3) . "s\n";
        if ($rc != 0) {
            echo "rc=$rc $sTime";
            _abort("Command failed. Aborting.", $rc);
        }
        _ok($sTime);
    }
    
    function _mkdir(string $sMyDir): void
    {
        if (!is_dir($sMyDir)) {
            echo "DIR > '$sMyDir' ";
            if (!mkdir($sMyDir, 0755, true)) {
                _abort("mkdir('$sMyDir') failed.");
            }
            _ok();
            echo "\n";
        } else {
            _skip("mkdir: already exists: '$sMyDir'");
        }
    
    }
    
    function _rm(string $sFileObj): void
    {
        if (is_dir($sFileObj)) 
        {
            _exec("rm -rf \"$sFileObj\"");
        } else if (file_exists($sFileObj)) {
            if (!unlink($sFileObj)) {
                _abort("unlink('$sFileObj') failed.");
            }
            _ok("File was deleted");
        } else {
            _skip("rm '$sFileObj' - does not exist");
        }
    }