add very crude scripts to export modules with selenium

This commit is contained in:
2026-05-29 16:06:34 +02:00
parent 1aa851e5ae
commit d37ff7984a
9 changed files with 177 additions and 12 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ $uri = [System.Uri]$AbsoluteUrl
Write-Host "Converting URL '$uri' to elixForms WS call format..."
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "extract-elx-module.psm1") -Force
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "elx-tools-module.psm1") -Force
$convertedUrl = Convert-UrlToElixAutocompleteFormat -AbsoluteUrl $uri
@@ -51,6 +51,79 @@ function Save-ElxInternals {
Pop-Location -StackName ElxTools
}
function New-EnvFileContent {
param(
[ValidateNotNullOrEmpty()][Parameter(Mandatory)][string]$ModuleTag
)
$envFileScriptPath = Join-Path $PSScriptRoot "../"
# Load existing .env if present
$envPath = Join-Path $envFileScriptPath '.env'
if (-not (Test-Path $envPath)) {
Write-Error "No existing .env file found!"
exit 1
}
$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 }
if ($l -match '=') {
$parts = $l -split '=', 2
$name = $parts[0].Trim()
$value = $parts[1].Trim().Trim("'").Trim('"')
$envValues[$name] = $value
}
if ($name -eq 'ELIXFORMS_MODULE_TAG') {
$envValues[$name] = $ModuleTag
}
}
$out = foreach ($name in $settingNames) { "$name='$($envValues[$name])'" }
$out -join "`n"
}
function Export-ElxModule {
param(
[ValidateNotNullOrEmpty()][Parameter(Mandatory)][string]$ModuleTag,
[ValidateScript({ Test-Path $_ })][Parameter(Mandatory)]$ModulePath
)
if (-not $Quiet) {
Write-Host "Switching to Selenium directory..."
}
$seleniumToolsScriptPath = Join-Path $PSScriptRoot "../tools/selenium/"
Push-Location -StackName Selenium $seleniumToolsScriptPath
if (-not $Quiet) {
Write-Host "Executing module export for '$ModuleTag'..."
}
#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
}
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 {
param (
[Parameter(Mandatory)][ValidateNotNullOrEmpty()][uri]$AbsoluteUrl
@@ -95,4 +168,5 @@ function Convert-UrlToElixAutocompleteFormat {
}
Export-ModuleMember -Function Convert-UrlToElixAutocompleteFormat
Export-ModuleMember -Function Save-ElxInternals
Export-ModuleMember -Function Save-ElxInternals
Export-ModuleMember -Function Export-ElxModule
+19
View File
@@ -0,0 +1,19 @@
[CmdletBinding()]
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
}
Write-Host "Exporting module tag '$ModuleTag' from elixForms..."
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "elx-tools-module.psm1") -Force
Export-ElxModule -ModuleTag $ModuleTag -ModulePath "$modulesSrcPath"
Write-Host "Module tag '$ModuleTag' exported successfully!" -ForegroundColor Green
+1 -1
View File
@@ -10,7 +10,7 @@ Write-Host "Found module files:" -ForegroundColor Cyan
$moduleFiles | ForEach-Object { Write-Host " - $($_.FullName)" -ForegroundColor Cyan }
Write-Host "Extracting ELX internals for each module..."
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "extract-elx-module.psm1") -Force
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "elx-tools-module.psm1") -Force
$moduleFiles | ForEach-Object {
Save-ElxInternals -ModulePath $_.FullName
@@ -9,7 +9,7 @@ if (-not $moduleFile) {
Write-Host "Latest updated module file found: '$($moduleFile.FullName)'" -ForegroundColor Cyan
Write-Host "Extracting ELX internals for module tag '$($moduleFile.FullName)'..."
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "extract-elx-module.psm1") -Force
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "elx-tools-module.psm1") -Force
Save-ElxInternals -ModulePath $moduleFile.FullName
+1 -1
View File
@@ -13,7 +13,7 @@ if (-not $moduleFile) {
Write-Host "Module file found: '$($moduleFile.FullName)'" -ForegroundColor Cyan
Write-Host "Extracting ELX internals for module tag '$($moduleFile.FullName)'..."
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "extract-elx-module.psm1") -Force
Import-Module $(Join-Path (Split-Path -Parent $MyInvocation.MyCommand.Definition) "elx-tools-module.psm1") -Force
Save-ElxInternals -ModulePath $moduleFile.FullName
+49 -3
View File
@@ -63,8 +63,8 @@ function Initialize-EnvironmentSettings {
Write-Host "Settings preparation complete"
}
function Initialize-NodeTools {
Write-Host "Installing Node.js dependencies for the ELX Tools..."
function Initialize-ExtractElxTools {
Write-Host "Installing Node.js dependencies for the ELX Tools..." -ForegroundColor Cyan
$extractElxToolsScriptPath = Join-Path $PSScriptRoot "../tools/extract-elx/"
@@ -82,6 +82,44 @@ function Initialize-NodeTools {
Write-Host "Node.js dependencies installed successfully!"
}
function Initialize-PlaywrightTools {
Write-Host "Installing Node.js dependencies for Playwright..." -ForegroundColor Cyan
$playwrightScriptPath = Join-Path $PSScriptRoot "../tools/playwright/"
Push-Location -StackName Playwright $playwrightScriptPath
# Install Node.js dependencies for Playwright
& npm install
if ($LASTEXITCODE -ne 0) {
Write-Error "npm install failed with exit code $LASTEXITCODE."
exit 1
}
Pop-Location -StackName Playwright
Write-Host "Node.js dependencies installed successfully!"
}
function Initialize-SeleniumTools {
Write-Host "Installing Node.js dependencies for Selenium..." -ForegroundColor Cyan
$seleniumScriptPath = Join-Path $PSScriptRoot "../tools/selenium/"
Push-Location -StackName Selenium $seleniumScriptPath
# Install Node.js dependencies for Selenium
& npm install
if ($LASTEXITCODE -ne 0) {
Write-Error "npm install failed with exit code $LASTEXITCODE."
exit 1
}
Pop-Location -StackName Selenium
Write-Host "Node.js dependencies installed successfully!"
}
# If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
# #"No Administrative rights, it will display a popup window asking user for Admin rights"
# $arguments = "-NoProfile -ExecutionPolicy Bypass -Command & '" + $myinvocation.mycommand.definition + "'"
@@ -113,7 +151,15 @@ Initialize-EnvironmentSettings
Write-Host
Initialize-NodeTools
Initialize-ExtractElxTools
Write-Host
Initialize-PlaywrightTools
Write-Host
Initialize-SeleniumTools
Write-Host
Write-Host "Environment preparation complete!" -ForegroundColor Green