scoop-earne/bin/checkver.ps1

83 lines
2.9 KiB
PowerShell

<#
.SYNOPSIS
Check version of given manifests.
.DESCRIPTION
Check version of given manifests (If no manifest is present, all manifests in root of repo will be checked).
-s Parameter is set to true by default. (use -ns to show all)
Few control parameters could be used.
-u - Update given manifests
-f - Force update given manifests
.PARAMETER Manifest
Manifest to check.
It could be List of manifests, specific manifest or string with placeholder.
.PARAMETER Dir
Where to search for manifest.
Default to bucket folder.
.PARAMETER Recurse
Manifests in all subdirectories will be checked. (except .vscode and bin)
.PARAMETER Rest
-s - Skip manifest with latest version
-u - Update given manifests
-f - Force update given manifests
Usefull for hash updates
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1
Check all manifests in root.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST
Check manifest with name MANIFEST.json in root.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -manifest MANIFEST
Check manifest with name MANIFEST.json in root.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -dir TODO -manifest MANIFEST
Check manifest with name MANIFEST.json in TODO directory.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST TODO
Check manifest with name MANIFEST.json in directory TODO.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -dir TODO
Check all manifests in directory TODO.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 MAN*
Check all manifests starting with MAN in root.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 Manifest1, Manifest2, Manifest3
Check all manifests (Manifest 1 to 3) in root.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST -u
Check manifest with name MANIFEST.json in root and update if there is new version.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST -f
Check manifest with name MANIFEST.json in root and update even when there is no new version.
#>
param(
[Parameter(ValueFromPipeline = $true)]
[Alias('App')]
[String[]] $Manifest = '*',
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
[String] $Dir = "$PSScriptRoot\..\bucket",
[Switch] $Recurse,
[Parameter(ValueFromRemainingArguments = $true)]
[String[]] $Rest = @()
)
begin {
. "$PSScriptRoot\Helpers.ps1"
if (-not $env:SCOOP_HOME) { $env:SCOOP_HOME = Resolve-Path (scoop prefix scoop) }
$Dir = Resolve-Path $Dir
$Script = "$env:SCOOP_HOME\bin\checkver.ps1"
$Rest = $Rest | Select-Object -Unique # Remove duplicated switches
}
process {
if ($Recurse) {
Get-RecursiveFolder | ForEach-Object { Invoke-Expression -Command "$Script -Dir ""$_"" $Rest" }
} else {
foreach ($man in $Manifest) { Invoke-Expression -Command "$Script -App ""$man"" -Dir ""$Dir"" $Rest" }
}
}
end { Write-Host 'DONE' -ForegroundColor Yellow }