| 
#! /usr/bin/php<?php
 
 function IdentificaOIPLocal(): string
 {
 return trim(shell_exec('ip a | grep 192.168 | cut -d" " -f6 | cut -d"/" -f1'));
 }
 
 function SubstituirOIPdoArquivo(string $arquivo, string $ip): void
 {
 if(is_file($arquivo)){
 $conteudo = file_get_contents($arquivo);
 $conteudo = preg_replace('/192.168.\d+.\d+/', $ip, $conteudo);
 file_put_contents($arquivo, $conteudo);
 }
 }
 
 function JaFoiSubstituido(string $arquivo, string $ip): bool
 {
 if(is_file($arquivo)){
 $conteudo = file_get_contents($arquivo);
 return preg_match("/$ip/", $conteudo);
 }
 return false;
 }
 // Função para percorrer diretórios recursivamente
 
 function percorrerDiretorios($diretorio, $ip) {
 // Abre o diretório
 $itens = new RecursiveIteratorIterator(
 new RecursiveDirectoryIterator($diretorio),
 RecursiveIteratorIterator::LEAVES_ONLY
 );
 
 // Itera sobre os itens encontrados
 foreach ($itens as $item) {
 // Se for um arquivo .env
 if ($item->isFile() && $item->getFilename() === '.env') {
 if(JaFoiSubstituido($item->getRealPath(), $ip)){
 exit;
 }
 
 SubstituirOIPdoArquivo($item->getRealPath(), $ip);
 }
 
 // Se for um arquivo launch.json
 if ($item->isFile() && $item->getFilename() === 'launch.json') {
 if(JaFoiSubstituido($item->getRealPath(), $ip)){
 exit;
 }
 SubstituirOIPdoArquivo($item->getRealPath(), $ip);
 }
 }
 }
 
 // Vamos carregar o .env.
 $pathEnvfile = __DIR__.'/../.env';
 if(!file_exists($pathEnvfile)){
 echo "Arquivo .env não encontrado\n";
 exit;
 }
 
 $envContent = file_get_contents($pathEnvfile);
 $envContent = explode("\n", $envContent);
 
 $env = [];
 foreach($envContent as $line){
 $line = explode('=', $line);
 if(count($line) === 2){
 $env[$line[0]] = $line[1];
 }
 }
 
 $ipLocal = IdentificaOIPLocal();
 
 $diretorioBase = $env['DIRETORIO_BASE'] ?? '/home/github';
 percorrerDiretorios($diretorioBase, $ipLocal);
 
 echo "Foi substituído o IP local nos arquivos .env e launch.json\n";
 echo "IP local: $ipLocal\n";
 echo "Bom trabalho,\nOSS!\n";
 |