src/Interact/exe21sp.ps1
|
# Interactive loop for exe21sp (invoked when exe21sp is run with no arguments and console is not redirected). param($Localize) #_if PSScript . "$PSScriptRoot\..\predicate.ps1" . "$PSScriptRoot\..\TaskbarProgress.ps1" . "$PSScriptRoot\..\WriteI18n.ps1" $LocalizeData = . "$PSScriptRoot\..\LocaleLoader.ps1" -Localize $Localize Set-I18nData -I18nData $LocalizeData.exe21spInteractI18nData $I18n = $LocalizeData.exe21spInteractI18nData $repoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent $exe21spScript = Join-Path $repoRoot 'exe21sp.ps1' $OldTitle = $Host.UI.RawUI.WindowTitle $Host.UI.RawUI.WindowTitle = "exe21sp - $($I18n.ModeName)" try { Write-SymboledWelcomeI18n Welcome while ($true) { Write-TaskbarProgress -Percent 0 $exe21spArgs = @{} $inputFile = '' do { Write-SymboledInfoI18n EnterInputFile Write-Host -ForegroundColor Gray $I18n.Prompt -NoNewline $inputFile = Read-Host if (-not $inputFile) { Write-SymboledErrorI18n InvalidInputFile } elseif ($inputFile -match "^(https?|ftp)://") { try { $null = Invoke-WebRequest -Uri $inputFile -Method Head -ErrorAction Stop } catch { Write-SymboledErrorI18n FileDoesNotExist $inputFile = '' } } else { if (-not (Test-Path -LiteralPath $inputFile -PathType Leaf)) { Write-SymboledErrorI18n FileDoesNotExist $inputFile = '' } } } while (-not $inputFile) $exe21spArgs.inputFile = $inputFile Write-TaskbarProgress -Percent 25 Write-SymboledInfoI18n EnterOutputFile Write-Host -ForegroundColor Gray $I18n.Prompt -NoNewline $outputFile = Read-Host if ($outputFile) { if ($outputFile -notmatch "\.ps1$") { Write-SymboledErrorI18n OutputFileExtensionError $outputFile += ".ps1" } $exe21spArgs.outputFile = $outputFile } Write-TaskbarProgress -Percent 50 try { Write-TaskbarProgress -Percent 75 if (Get-Command exe21sp -ErrorAction SilentlyContinue) { exe21sp @exe21spArgs } else { & $exe21spScript @exe21spArgs } Write-TaskbarProgress -Percent 100 Write-TaskbarProgressClear } catch { Write-TaskbarProgressError Write-Error $_ } Write-SymboledQuestionI18n ConvertAnother AdditionalInfoPrompt Write-Host -ForegroundColor Gray $I18n.Prompt -NoNewline if (-not (IsEnable(Read-Host))) { break } } Write-SymboledExitI18n ExitMessage } finally { Write-TaskbarProgressClear $Host.UI.RawUI.WindowTitle = $OldTitle } #_else #_require exe21sp #_!!Enter-Exe21SpInteract @PSBoundParameters #_endif |