From ccd91b4f0fb633dbb058c545048aa453e11942b0 Mon Sep 17 00:00:00 2001 From: Pier-Paolo Mammi Date: Thu, 16 Jul 2026 10:43:10 +0200 Subject: [PATCH] rewrite scripts to detect composer environment --- ...i-docker.bat => composer-dump-autoload.bat | 2 +- ...install-docker.bat => composer-install.bat | 3 +- scripts/composer-dump-autoload.ps1 | 40 +++++++++++++++++ scripts/composer-install.ps1 | 40 +++++++++++++++++ scripts/composer-run-command.ps1 | 45 +++++++++++++++++++ scripts/serve-api.ps1 | 39 ++++++++++++++++ ...-dump-autoload-docker.bat => serve-api.bat | 3 +- 7 files changed, 167 insertions(+), 5 deletions(-) rename serve-api-docker.bat => composer-dump-autoload.bat (66%) rename composer-install-docker.bat => composer-install.bat (75%) create mode 100644 scripts/composer-dump-autoload.ps1 create mode 100644 scripts/composer-install.ps1 create mode 100644 scripts/composer-run-command.ps1 create mode 100644 scripts/serve-api.ps1 rename composer-dump-autoload-docker.bat => serve-api.bat (76%) diff --git a/serve-api-docker.bat b/composer-dump-autoload.bat similarity index 66% rename from serve-api-docker.bat rename to composer-dump-autoload.bat index 18f062f..0b88a7d 100644 --- a/serve-api-docker.bat +++ b/composer-dump-autoload.bat @@ -5,7 +5,7 @@ echo %cmdcmdline% | findstr /i /c:"%~nx0" >NUL && set iscommandline=1 echo %PSModulePath% | findstr /i /c:"%USERPROFILE%" >NUL && set ispowershell=1 cd /D "%~dp0" -docker run --rm -p 8000:8000 -v %~dp0:/app -w /app --name php-serve php:8.5.8-cli php -S 0.0.0.0:8000 -t public public/index.php +@pwsh -NoProfile -ExecutionPolicy Bypass -Command .\scripts\composer-dump-autoload.ps1 IF DEFINED iscommandline IF NOT DEFINED ispowershell pause ENDLOCAL \ No newline at end of file diff --git a/composer-install-docker.bat b/composer-install.bat similarity index 75% rename from composer-install-docker.bat rename to composer-install.bat index 796e677..f95b3a5 100644 --- a/composer-install-docker.bat +++ b/composer-install.bat @@ -1,11 +1,10 @@ - @echo off SETLOCAL EnableDelayedExpansion echo %cmdcmdline% | findstr /i /c:"%~nx0" >NUL && set iscommandline=1 echo %PSModulePath% | findstr /i /c:"%USERPROFILE%" >NUL && set ispowershell=1 cd /D "%~dp0" -docker run --rm -v %~dp0:/app -w /app composer:latest install -o +@pwsh -NoProfile -ExecutionPolicy Bypass -Command .\scripts\composer-install.ps1 IF DEFINED iscommandline IF NOT DEFINED ispowershell pause ENDLOCAL \ No newline at end of file diff --git a/scripts/composer-dump-autoload.ps1 b/scripts/composer-dump-autoload.ps1 new file mode 100644 index 0000000..b2f2fe0 --- /dev/null +++ b/scripts/composer-dump-autoload.ps1 @@ -0,0 +1,40 @@ +$ErrorActionPreference = 'Stop' +$root = Split-Path -Parent $MyInvocation.MyCommand.Path +$root = Join-Path $root '..' + +$useDockerComposer = $false +$dockerRoot = $null + +if (-not (Get-Command composer -ErrorAction SilentlyContinue)) { + Write-Host "Composer non trovato localmente. Verifico se Docker è disponibile..." + if (-not (Get-Command docker -ErrorAction SilentlyContinue)) { + throw "Composer non trovato e Docker mancante! Installa Composer o Docker prima di generare il pacchetto." + } + + $dockerRoot = $root -replace '\\', '/' + if ($dockerRoot -match '^([A-Za-z]):') { + $dockerRoot = "/$($Matches[1].ToLower())$($dockerRoot.Substring(2))" + } + + Write-Host "Docker trovato. Root: '$dockerRoot' Test di Composer tramite container..." + docker run --rm -v "$($dockerRoot):/app" -w /app composer:2 composer --version 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Docker presente, ma Composer non riesce ad avviarsi tramite container. Installa Composer localmente o verifica Docker." + } + + $useDockerComposer = $true +} + +Push-Location $root +try { + Write-Host "Installazione dipendenze PHP" + if ($useDockerComposer) { + docker run --rm -v "$($dockerRoot):/app" -w /app composer:2 composer dump-autoload --optimize + } + else { + composer dump-autoload --optimize + } +} +finally { + Pop-Location +} \ No newline at end of file diff --git a/scripts/composer-install.ps1 b/scripts/composer-install.ps1 new file mode 100644 index 0000000..0131955 --- /dev/null +++ b/scripts/composer-install.ps1 @@ -0,0 +1,40 @@ +$ErrorActionPreference = 'Stop' +$root = Split-Path -Parent $MyInvocation.MyCommand.Path +$root = Join-Path $root '..' + +$useDockerComposer = $false +$dockerRoot = $null + +if (-not (Get-Command composer -ErrorAction SilentlyContinue)) { + Write-Host "Composer non trovato localmente. Verifico se Docker è disponibile..." + if (-not (Get-Command docker -ErrorAction SilentlyContinue)) { + throw "Composer non trovato e Docker mancante! Installa Composer o Docker prima di generare il pacchetto." + } + + $dockerRoot = $root -replace '\\', '/' + if ($dockerRoot -match '^([A-Za-z]):') { + $dockerRoot = "/$($Matches[1].ToLower())$($dockerRoot.Substring(2))" + } + + Write-Host "Docker trovato. Root: '$dockerRoot' Test di Composer tramite container..." + docker run --rm -v "$($dockerRoot):/app" -w /app composer:2 composer --version 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Docker presente, ma Composer non riesce ad avviarsi tramite container. Installa Composer localmente o verifica Docker." + } + + $useDockerComposer = $true +} + +Push-Location $root +try { + Write-Host "Installazione dipendenze PHP" + if ($useDockerComposer) { + docker run --rm -v "$($dockerRoot):/app" -w /app composer:2 composer install --optimize-autoloader + } + else { + composer install --optimize-autoloader + } +} +finally { + Pop-Location +} \ No newline at end of file diff --git a/scripts/composer-run-command.ps1 b/scripts/composer-run-command.ps1 new file mode 100644 index 0000000..ba8d3a6 --- /dev/null +++ b/scripts/composer-run-command.ps1 @@ -0,0 +1,45 @@ +param( + [Parameter(Mandatory)][string]$Command = "", + [string[]]$Arguments = "" +) + +$ErrorActionPreference = 'Stop' +$root = Split-Path -Parent $MyInvocation.MyCommand.Path +$root = Join-Path $root '..' + +$useDockerComposer = $false +$dockerRoot = $null + +if (-not (Get-Command composer -ErrorAction SilentlyContinue)) { + Write-Host "Composer non trovato localmente. Verifico se Docker è disponibile..." + if (-not (Get-Command docker -ErrorAction SilentlyContinue)) { + throw "Composer non trovato e Docker mancante! Installa Composer o Docker prima di generare il pacchetto." + } + + $dockerRoot = $root -replace '\\', '/' + if ($dockerRoot -match '^([A-Za-z]):') { + $dockerRoot = "/$($Matches[1].ToLower())$($dockerRoot.Substring(2))" + } + + Write-Host "Docker trovato. Root: '$dockerRoot' Test di Composer tramite container..." + docker run --rm -v "$($dockerRoot):/app" -w /app composer:2 composer --version 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Docker presente, ma Composer non riesce ad avviarsi tramite container. Installa Composer localmente o verifica Docker." + } + + $useDockerComposer = $true +} + +Push-Location $root +try { + Write-Host "Installazione dipendenze PHP" + if ($useDockerComposer) { + docker run --rm -v "$($dockerRoot):/app" -w /app composer:2 composer $Command @Arguments + } + else { + composer $Command @Arguments + } +} +finally { + Pop-Location +} \ No newline at end of file diff --git a/scripts/serve-api.ps1 b/scripts/serve-api.ps1 new file mode 100644 index 0000000..2426142 --- /dev/null +++ b/scripts/serve-api.ps1 @@ -0,0 +1,39 @@ +$ErrorActionPreference = 'Stop' +$root = Split-Path -Parent $MyInvocation.MyCommand.Path +$root = Join-Path $root '..' + +$useDockerComposer = $false +$dockerRoot = $null + +if (-not (Get-Command composer -ErrorAction SilentlyContinue)) { + Write-Host "Composer non trovato localmente. Verifico se Docker è disponibile..." + if (-not (Get-Command docker -ErrorAction SilentlyContinue)) { + throw "Composer non trovato e Docker mancante! Installa Composer o Docker prima di generare il pacchetto." + } + + $dockerRoot = $root -replace '\\', '/' + if ($dockerRoot -match '^([A-Za-z]):') { + $dockerRoot = "/$($Matches[1].ToLower())$($dockerRoot.Substring(2))" + } + + Write-Host "Docker trovato. Root: '$dockerRoot' Test di Composer tramite container..." + docker run --rm -v "$($dockerRoot):/app" -w /app composer:2 composer --version 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Docker presente, ma Composer non riesce ad avviarsi tramite container. Installa Composer localmente o verifica Docker." + } + + $useDockerComposer = $true +} + +Push-Location $root +try { + if ($useDockerComposer) { + docker run --rm -p 8000:8000 -v "$($dockerRoot):/app" -w /app --name php-serve php:8.5.8-cli php -S 0.0.0.0:8000 -t public public/index.php + } + else { + php -S 0.0.0.0:8000 -t public public/index.php + } +} +finally { + Pop-Location +} \ No newline at end of file diff --git a/composer-dump-autoload-docker.bat b/serve-api.bat similarity index 76% rename from composer-dump-autoload-docker.bat rename to serve-api.bat index 2b85749..2cf8b17 100644 --- a/composer-dump-autoload-docker.bat +++ b/serve-api.bat @@ -1,11 +1,10 @@ - @echo off SETLOCAL EnableDelayedExpansion echo %cmdcmdline% | findstr /i /c:"%~nx0" >NUL && set iscommandline=1 echo %PSModulePath% | findstr /i /c:"%USERPROFILE%" >NUL && set ispowershell=1 cd /D "%~dp0" -docker run --rm -v %~dp0:/app -w /app composer:latest dump-autoload -o +@pwsh -NoProfile -ExecutionPolicy Bypass -Command .\scripts\serve-api.ps1 IF DEFINED iscommandline IF NOT DEFINED ispowershell pause ENDLOCAL \ No newline at end of file