- set minimum PowerShell usage version to 7.4
- replace npx env-cmd with PS Environment option
- move latest downloaded file by Selenium to module folder
- cleanup code
This commit is contained in:
2026-06-18 16:21:15 +02:00
parent 9f4257ae2e
commit a97cebb064
3 changed files with 70 additions and 35 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ IF "%~1"=="" (
set ModuleTag=%~1
)
@powershell -NoProfile -ExecutionPolicy Bypass -Command .\scripts\export-elx.ps1 -ModuleTag %ModuleTag%
@pwsh -NoProfile -ExecutionPolicy Bypass -Command .\scripts\export-elx.ps1 -ModuleTag %ModuleTag%
IF DEFINED iscommandline IF NOT DEFINED ispowershell pause
ENDLOCAL
+52 -26
View File
@@ -1,7 +1,7 @@
# Script-level parameters and cmdlet binding to support -Verbose and common parameters
[CmdletBinding()]
param (
[switch]$Quiet
[switch]$Quiet = $false
)
function Write-LogMessage {
@@ -56,6 +56,16 @@ function New-EnvFileContent {
[ValidateNotNullOrEmpty()][Parameter(Mandatory)][string]$ModuleTag
)
$envValues = Get-EnvironmentFromFile -ModuleTag $ModuleTag
$out = ($envValues.Keys | ForEach-Object { "$_='$($envValues[$_])'" }) -join "`n"
}
function Get-EnvironmentFromFile {
param(
[ValidateNotNullOrEmpty()][Parameter(Mandatory)][string]$ModuleTag
)
$envFileScriptPath = Join-Path $PSScriptRoot "../"
# Load existing .env if present
$envPath = Join-Path $envFileScriptPath '.env'
@@ -67,7 +77,7 @@ function New-EnvFileContent {
$envValues = @{}
$envLines = Get-Content -Raw -Path $envPath -ErrorAction Stop
Write-Host $envLines
foreach ($line in $envLines -split "`n") {
$l = $line.Trim()
if ($l -eq '' -or $l.StartsWith('#') -or $l.StartsWith(';')) { continue }
@@ -81,8 +91,8 @@ function New-EnvFileContent {
$envValues[$name] = $ModuleTag
}
}
$out = foreach ($name in $settingNames) { "$name='$($envValues[$name])'" }
$out -join "`n"
$envValues
}
function Export-ElxModule {
@@ -98,30 +108,45 @@ function Export-ElxModule {
$seleniumToolsScriptPath = Join-Path $PSScriptRoot "../tools/selenium/"
Push-Location -StackName Selenium $seleniumToolsScriptPath
if (-not $Quiet) {
Write-Host "Executing module export for '$ModuleTag'..."
try {
if (-not $Quiet) {
Write-Host "Executing module export for '$ModuleTag'..."
}
$NpmPath = (Get-Command npm).Source
if (-not $NpmPath) {
Write-Error "npm is not installed or not found in PATH. Please install Node.js and npm, then try again."
exit 1
}
Start-Process pwsh -ArgumentList "$NpmPath run export" -Environment (Get-EnvironmentFromFile -ModuleTag $ModuleTag) -NoNewWindow -Wait -PassThru | Out-Null
if ($LASTEXITCODE -and ($LASTEXITCODE -ne 0)) {
Write-Error "Module export for '$ModuleTag' failed with exit code $LASTEXITCODE."
exit 1
}
if (-not $Quiet) {
Write-Host "Module export for '$ModuleTag' completed successfully!" -ForegroundColor Green
Write-Host "Switching back to original directory..."
}
$seleniumDownloadDir = Join-Path $seleniumToolsScriptPath "downloads"
if (-not (Test-Path -Path $seleniumDownloadDir)) {
Write-Error "Selenium download directory not found at '$seleniumDownloadDir'."
exit 1
}
$latestDownloadedFile = Get-ChildItem -Path $seleniumDownloadDir -Filter "*.elx" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if (-not $latestDownloadedFile) {
Write-Error "No .elx file found in Selenium download directory '$seleniumDownloadDir'."
exit 1
}
Move-Item -Path $latestDownloadedFile.FullName -Destination (Join-Path $ModulePath $latestDownloadedFile.Name) -Force
}
#HACK: il tool prende in ingresso un env file
$tmpEnvFile = [System.IO.Path]::GetTempFileName()
New-EnvFileContent -ModuleTag $ModuleTag | Set-Content -LiteralPath $tmpEnvFile -Encoding UTF8
& npx env-cmd --file "$tmpEnvFile" -- npm run export
Remove-Item -LiteralPath $tmpEnvFile -Force -ErrorAction SilentlyContinue
if ($LASTEXITCODE -ne 0) {
Write-Error "Module export for '$ModuleTag' failed with exit code $LASTEXITCODE."
exit 1
finally {
Pop-Location -StackName Selenium
}
if (-not $Quiet) {
Write-Host "Module export for '$ModuleTag' completed successfully!" -ForegroundColor Green
Write-Host "Switching back to original directory..."
}
Pop-Location -StackName Selenium
}
function Convert-UrlToElixAutocompleteFormat {
@@ -170,3 +195,4 @@ function Convert-UrlToElixAutocompleteFormat {
Export-ModuleMember -Function Convert-UrlToElixAutocompleteFormat
Export-ModuleMember -Function Save-ElxInternals
Export-ModuleMember -Function Export-ElxModule
Export-ModuleMember -Function New-EnvFileContent
+16 -7
View File
@@ -3,17 +3,26 @@ param(
[Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$ModuleTag
)
Write-Host "Checking module folder existence..."
$modulesSrcPath = Join-Path -Resolve $PSScriptRoot "../src/$ModuleTag"
if (-not (Test-Path -Path "$modulesSrcPath")) {
Write-Host "Module folder not found. Creating folder for module tag '$ModuleTag'..." -ForegroundColor Yellow
New-Item -ItemType Directory -Path "$modulesSrcPath" -Force | Out-Null
$psVersion = $PSVersionTable.PSVersion
if ($psVersion.Major -lt 7 -or ($psVersion.Major -eq 7 -and $psVersion.Minor -lt 4)) {
Write-Host "This script requires PowerShell 7.4 or higher. Please install PowerShell >= 7.4 and try again." -ForegroundColor Red
exit 1
}
Write-Host "Exporting module tag '$ModuleTag' from elixForms..."
Write-Host "Checking module folder existence..."
$modulesSrcPath = Join-Path $PSScriptRoot "../src/$ModuleTag"
if (-not (Test-Path -Path $modulesSrcPath)) {
Write-Host "Module folder not found. Creating folder for module tag '$ModuleTag'..." -ForegroundColor Yellow
New-Item -ItemType Directory -Path $modulesSrcPath -Force | Out-Null
}
$modulesSrcPath = Join-Path -Resolve $PSScriptRoot "../src/$ModuleTag"
Write-Host "Module tag '$ModuleTag' will be exported to '$modulesSrcPath'"
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "elx-tools-module.psm1") -Force
Export-ElxModule -ModuleTag $ModuleTag -ModulePath "$modulesSrcPath"
Write-Host "Exporting module tag '$ModuleTag' from elixForms..."
Export-ElxModule -ModuleTag $ModuleTag -ModulePath $modulesSrcPath
Write-Host "Module tag '$ModuleTag' exported successfully!" -ForegroundColor Green