<?php

namespace App\Http\Controllers\API;

use Exception;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Nwidart\Modules\Facades\Module;

class UpdateController extends Controller
{
    public static function run($vendor, $repo, $version = NULL)
    {
        # Validação via chave de API (Em dev)

        // if(isset($_REQUEST['api_key']))
        // {
        //     $api_key = $_REQUEST['api_key'];
        //     if($api_key!="12345")
        //     {
        //         echo "Chave API Inválida";
        //     }
        // }else{
        //     echo "Chave API Não setada";
        // }
        // exit;

        $modules = Module::all();
        $existe = false;
        foreach ($modules as $module) {
            $compare = strtolower($module->getName()) . "-module";
            if ($repo == $compare) {
                $existe = true;
                continue;
            }
        }
        if (!$existe) {
            echo "Este módulo não existe neste site!";
            exit;
        }

        if ($version != NULL) {
            $version = ":v" . $version;
        }
        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
            // Windows
            $os = "start";
            $os = ""; #Se retornar erro na hora da execução, comente isso.
        } else {
            // Outros OS
            $os = "bash";
        }

        try {
            $output = array();
            $exec = exec("cd ../ && $os update.sh $vendor/$repo$version", $output, $return);
            if ($return != 0) {
                echo 0;
                var_dump($output);
            } else {
                echo 1;
                var_dump($output);
            }
        } catch (Exception $e) {
            echo $e;
        }
    }
}
