Initial commit
This commit is contained in:
126
00-site.ps1
Normal file
126
00-site.ps1
Normal file
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env pwsh
|
||||
|
||||
$Env:PATH = "$PSScriptRoot\_generator\site;$PSScriptRoot\_generator\vips;$Env:PATH"
|
||||
|
||||
# Check if ConsoleGuiTools are available.
|
||||
$cgt = Get-Module -ListAvailable Microsoft.PowerShell.ConsoleGuiTools
|
||||
if ($cgt -eq $null) {
|
||||
Write-Output 'Missing ConsoleGuiTools, please make sure you have PowerShell 7 and run the following command as an administrator:'
|
||||
Write-Output ' Install-Module Microsoft.PowerShell.ConsoleGuiTools'
|
||||
Read-Host
|
||||
Exit 1
|
||||
}
|
||||
|
||||
function FetchGenerator {
|
||||
$tempFile = New-TemporaryFile
|
||||
$url = 'https://temp.ogion.cz/site-zahradka.zip'
|
||||
Invoke-WebRequest -Uri $url -OutFile $tempFile
|
||||
Expand-Archive $tempFile -DestinationPath '_generator' -Force
|
||||
}
|
||||
|
||||
function EnsureGenerator {
|
||||
if (!(Test-Path '_generator/site/site.exe')) {
|
||||
FetchGenerator
|
||||
}
|
||||
}
|
||||
|
||||
function SiteWatch {
|
||||
EnsureGenerator
|
||||
site watch
|
||||
}
|
||||
|
||||
function SiteCheck {
|
||||
EnsureGenerator
|
||||
site check
|
||||
Read-Host
|
||||
}
|
||||
|
||||
function SiteBuild {
|
||||
EnsureGenerator
|
||||
site build
|
||||
Read-Host
|
||||
}
|
||||
|
||||
function SiteRebuild {
|
||||
EnsureGenerator
|
||||
site rebuild
|
||||
Read-Host
|
||||
}
|
||||
|
||||
function UpdateGenerator {
|
||||
FetchGenerator
|
||||
Read-Host
|
||||
}
|
||||
|
||||
function Terminate {
|
||||
[Terminal.Gui.Application]::RequestStop()
|
||||
}
|
||||
|
||||
$action = $null
|
||||
|
||||
function MakeUi {
|
||||
Import-Module Microsoft.PowerShell.ConsoleGuiTools
|
||||
$module = (Get-Module Microsoft.PowerShell.ConsoleGuiTools -List).ModuleBase
|
||||
Add-Type -Path (Join-path $module Terminal.Gui.dll)
|
||||
|
||||
[Terminal.Gui.Application]::Init()
|
||||
$window = [Terminal.Gui.Window]::new()
|
||||
$window.Title = 'site: strom-roku-2023.krk-litvinov.cz'
|
||||
[Terminal.Gui.Application]::Top.Add($window)
|
||||
|
||||
$watchButton = [Terminal.Gui.Button]::new()
|
||||
$watchButton.Text = 'watch: Start test server and watch for changes'
|
||||
$watchButton.add_Clicked({
|
||||
$script:action = $function:SiteWatch
|
||||
Terminate
|
||||
})
|
||||
$window.Add($watchButton)
|
||||
|
||||
$checkButton = [Terminal.Gui.Button]::new()
|
||||
$checkButton.Text = 'check: Check links'
|
||||
$checkButton.add_Clicked({
|
||||
$script:action = $function:SiteCheck
|
||||
Terminate
|
||||
})
|
||||
$checkButton.Y = [Terminal.Gui.Pos]::Bottom($watchButton)
|
||||
$window.Add($checkButton)
|
||||
|
||||
$buildButton = [Terminal.Gui.Button]::new()
|
||||
$buildButton.Text = 'build: Update output directory'
|
||||
$buildButton.add_Clicked({
|
||||
$script:action = $function:SiteBuild
|
||||
Terminate
|
||||
})
|
||||
$buildButton.Y = [Terminal.Gui.Pos]::Bottom($checkButton) + 1
|
||||
$window.Add($buildButton)
|
||||
|
||||
$rebuildButton = [Terminal.Gui.Button]::new()
|
||||
$rebuildButton.Text = 'rebuild: Rebuild site from scratch'
|
||||
$rebuildButton.add_Clicked({
|
||||
$result = [Terminal.Gui.MessageBox]::Query('Rebuild', "Do you want to rebuild the web site output from scratch?`nIt can take a minute", @('Yes', 'No'))
|
||||
if ($result -eq 0) {
|
||||
$script:action = $function:SiteRebuild
|
||||
Terminate
|
||||
}
|
||||
})
|
||||
$rebuildButton.Y = [Terminal.Gui.Pos]::Bottom($buildButton)
|
||||
$window.Add($rebuildButton)
|
||||
|
||||
$updateButton = [Terminal.Gui.Button]::new()
|
||||
$updateButton.Text = 'Update the site program'
|
||||
$updateButton.add_Clicked({
|
||||
$script:action = $function:UpdateGenerator
|
||||
Terminate
|
||||
})
|
||||
$updateButton.Y = [Terminal.Gui.Pos]::Bottom($rebuildButton) + 1
|
||||
$window.Add($updateButton)
|
||||
|
||||
[Terminal.Gui.Application]::Run()
|
||||
[Terminal.Gui.Application]::Shutdown()
|
||||
}
|
||||
|
||||
MakeUi
|
||||
|
||||
if ($action -ne $null) {
|
||||
& $action
|
||||
}
|
||||
Reference in New Issue
Block a user