85 lines
2.1 KiB
PowerShell
85 lines
2.1 KiB
PowerShell
$dataDir = Join-Path $env:AppData "Glimpse"
|
|
$dataFile = Join-Path $dataDir "extensions.cli"
|
|
|
|
function Get-VersionValue($package, $packages){
|
|
$oldPkg = $packages | where { $_.Action -eq "Uninstall" -and $_.Id -eq $package.Id } | sort { $_.Timestamp } -des | select -first 1
|
|
|
|
$result = ""
|
|
|
|
if ($oldPkg -ne $nul -and $oldPkg.Version -ne $package.Version){ $result += "{0}.." -f $oldPkg.Version }
|
|
|
|
return $result += $package.Version
|
|
}
|
|
|
|
# INSTALL
|
|
function Register-GlimpseExtension($package, $dte) {
|
|
$pkgs = @()
|
|
|
|
if (Test-Path $dataFile)
|
|
{
|
|
$pkgs = @(Import-Clixml $dataFile | where { $_.Timestamp -gt (Get-Date).AddMinutes(-8) })
|
|
}
|
|
|
|
$pkgs += @{
|
|
"Id" = $package.Id;
|
|
"Version" = $package.Version;
|
|
"Timestamp" = Get-Date;
|
|
"Action" = "Install"
|
|
}
|
|
|
|
if (!(Test-Path $dataDir)){ md $dataDir }
|
|
|
|
$pkgs | Export-Clixml $dataFile
|
|
|
|
$queryArgs = @()
|
|
foreach ($pkg in @($pkgs | where { $_.Action -eq "Install" } | sort { $_.Timestamp } -des))
|
|
{
|
|
$version = Get-VersionValue $pkg $pkgs
|
|
$queryArgs += "{0}={1}" -f $pkg.Id, $version
|
|
}
|
|
|
|
$queryString = $queryArgs -join "&"
|
|
$dte.ItemOperations.Navigate("http://getGlimpse.com/Version/Install/?" + $queryString)
|
|
}
|
|
|
|
Register-TabExpansion 'Register-GlimpseExtension' @{
|
|
'package' = {
|
|
"$package"
|
|
};
|
|
'dte' = {
|
|
"$DTE"
|
|
};
|
|
}
|
|
|
|
Export-ModuleMember Register-GlimpseExtension
|
|
|
|
# UNINSTALL
|
|
function Unregister-GlimpseExtension($package) {
|
|
$pkgs = @()
|
|
|
|
if (Test-Path $dataFile)
|
|
{
|
|
$pkgs = @(Import-Clixml $dataFile)
|
|
}
|
|
|
|
$pkgs += @{
|
|
"Id" = $package.Id;
|
|
"Version" = $package.Version;
|
|
"Timestamp" = Get-Date;
|
|
"Action" = "Uninstall"
|
|
}
|
|
|
|
if (!(Test-Path $dataDir)){ md $dataDir }
|
|
|
|
$pkgs | Export-Clixml $dataFile
|
|
}
|
|
|
|
Register-TabExpansion 'Unregister-GlimpseExtension' @{
|
|
'package' = {
|
|
"$package"
|
|
};
|
|
}
|
|
|
|
Export-ModuleMember Unregister-GlimpseExtension
|
|
|