Skip to content

Commit

Permalink
refactor(plugin.yaml): enhance platform support and update commands
Browse files Browse the repository at this point in the history
Signed-off-by: yxxhero <aiopsclub@163.com>
  • Loading branch information
yxxhero committed Dec 19, 2024
1 parent 7d22577 commit b923e0c
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 8 deletions.
75 changes: 75 additions & 0 deletions install-binary.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
param (
[switch] $Update = $false
)

function Get-Architecture {
$architecture = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture

$arch = switch ($architecture) {
"X64" { "amd64" }
"Arm64" { "arm64" }
Default { "" }
}

if ($arch -eq "") {
throw "Unsupported architecture: ${architecture}"
}

return $arch
}

function Get-Version {
param ([Parameter(Mandatory=$true)][bool] $Update)

if ($Update) {
return "latest"
}

return git describe --tags --exact-match 2>$null || "latest"
}

function New-TemporaryDirectory {
$tmp = [System.IO.Path]::GetTempPath()
$name = (New-Guid).ToString("N")
$dir = New-Item -ItemType Directory -Path (Join-Path $tmp $name)
return $dir.FullName
}

function Get-Url {
param ([Parameter(Mandatory=$true)][string] $Version, [Parameter(Mandatory=$true)][string] $Architecture)

if ($Version -eq "latest") {
return "https://github.com/databus23/helm-diff/releases/latest/download/helm-diff-windows-${Architecture}.tgz"
}
return "https://github.com/databus23/helm-diff/releases/download/${Version}/helm-diff-windows-${Architecture}.tgz"
}

function Download-Plugin {
param ([Parameter(Mandatory=$true)][string] $Url, [Parameter(Mandatory=$true)][string] $Output)

Invoke-WebRequest -OutFile $Output $Url
}

function Install-Plugin {
param ([Parameter(Mandatory=$true)][string] $ArchiveDirectory, [Parameter(Mandatory=$true)][string] $ArchiveName, [Parameter(Mandatory=$true)][string] $Destination)

tar -xzf (Join-Path $ArchiveDirectory $ArchiveName) -C $ArchiveDirectory

New-Item -ItemType Directory -Path $Destination -Force
Copy-Item -Path (Join-Path $ArchiveDirectory "diff" "bin" "diff.exe") -Destination $Destination -Force
}

$ErrorActionPreference = "Stop"

$archiveName = "helm-diff.tgz"
$arch = Get-Architecture
$version = Get-Version -Update $Update
$tmpDir = New-TemporaryDirectory

trap { Remove-Item -path $tmpDir -Recurse -Force }

$url = Get-Url -Version $version -Architecture $arch
$output = Join-Path $tmpDir $archiveName

Download-Plugin -Url $url -Output $output
Install-Plugin -ArchiveDirectory $tmpDir -ArchiveName $archiveName -Destination (Join-Path $env:HELM_PLUGIN_DIR "bin")
34 changes: 26 additions & 8 deletions plugin.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
name: "diff"
name: diff
# Version is the version of Helm plus the number of official builds for this
# plugin
version: "3.9.13"
usage: "Preview helm upgrade changes as a diff"
description: "Preview helm upgrade changes as a diff"
version: 3.9.13
usage: Preview helm upgrade changes as a diff
description: Preview helm upgrade changes as a diff
useTunnel: true
command: "$HELM_PLUGIN_DIR/bin/diff"
hooks:
install: "$HELM_PLUGIN_DIR/install-binary.sh"
update: "$HELM_PLUGIN_DIR/install-binary.sh -u"
platformCommand:
- command: ${HELM_PLUGIN_DIR}/bin/diff
- os: windows
command: ${HELM_PLUGIN_DIR}\bin\diff.exe
platformHooks:
install:
- command: ${HELM_PLUGIN_DIR}/install-binary.sh
- os: windows
command: pwsh
args:
- -c
- ${HELM_PLUGIN_DIR}/install-binary.ps1
update:
- command: ${HELM_PLUGIN_DIR}/install-binary.sh
args:
- -u
- os: windows
command: pwsh
args:
- -c
- ${HELM_PLUGIN_DIR}/install-binary.ps1
- -Update

0 comments on commit b923e0c

Please sign in to comment.