Files
dsh-plugins/scripts/dsh-plugin-install.ps1
Coder f686c1413c
Some checks failed
build-and-publish / build-test (push) Failing after 20s
build-and-publish / publish (push) Has been skipped
fix: install plugins via direct Gitea tarball URLs (core deps from npmjs)
2026-08-26 23:10:05 +07:00

71 lines
2.6 KiB
PowerShell

<#
.SYNOPSIS
Installs shared @deepseek-ai/* plugins from the Gitea npm registry into a
DSH profile and wires them into cordis.patch.yml.
.DESCRIPTION
Adds the three shared plugins to the profile's package.json as direct
tarball URLs pointing at the Gitea npm registry, installs them, removes
stale link: dependencies, and idempotently appends insert rows to
cordis.patch.yml. Transitive @deepseek-ai/* core dependencies resolve from
the public npmjs registry (NOT scoped to Gitea).
.PARAMETER Profile
Profile name (directory under $DshHome\profiles). Default: 'web'.
.PARAMETER DshHome
DSH config root. Default: $env:DSH_HOME, else ~/.dsh.
.PARAMETER Token
Gitea token for the private npm registry. Default: $env:GITEA_NPM_TOKEN.
.EXAMPLE
.\scripts\dsh-plugin-install.ps1 -Token <GITEA_NPM_TOKEN>
#>
[CmdletBinding()]
param(
[string]$Profile = 'web',
[string]$DshHome,
[string]$Token = $env:GITEA_NPM_TOKEN
)
$baseUrl = 'https://git.byte-mate.ru/api/packages/Coder/npm'
# Ordered: name → tarball path within the Gitea npm registry.
$plugins = [ordered]@{
'@deepseek-ai/dsh-tool-lab' = @{ Version = '0.1.0-rc.7'; Id = 'tool-lab' }
'@deepseek-ai/dsh-web-search-searxng' = @{ Version = '0.1.0-rc.7'; Id = 'web-search-searxng' }
'@deepseek-ai/dsh-telegram-remote' = @{ Version = '0.1.0'; Id = 'telegram-remote' }
}
if (-not $DshHome) { $DshHome = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path $HOME '.dsh' } }
$profileDir = Join-Path $DshHome "profiles\$Profile"
if (-not (Test-Path $profileDir)) {
Write-Error "Profile dir not found: $profileDir"
exit 1
}
Write-Host "Profile dir: $profileDir"
# 1. Remove stale link: dependencies (installed under the old scoped registry).
& pnpm --dir $profileDir remove @deepseek-ai/dsh-tool-lab @deepseek-ai/dsh-web-search-searxng @deepseek-ai/dsh-telegram-remote 2>$null | Out-Null
Write-Host "Removed stale versions (if any)"
# 2. Add plugins as direct tarball URLs from the Gitea npm registry.
$specs = @()
foreach ($pkg in $plugins.Keys) {
$esc = $pkg -replace '/', '%2F'
$basename = ($pkg -split '/')[-1]
$meta = $plugins[$pkg]
$tarball = "$baseUrl/$esc/-/$($meta.Version)/$basename-$($meta.Version).tgz"
$specs += "$pkg@$tarball"
}
& pnpm --dir $profileDir add $specs
# 3. Idempotently append insert blocks to cordis.patch.yml.
$patchFile = Join-Path $profileDir 'cordis.patch.yml'
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
foreach ($pkg in $plugins.Keys) {
& node (Join-Path $scriptDir 'patch-cordis.mjs') --file $patchFile --name $pkg --id $plugins[$pkg].Id
}
Write-Host "`nDone. Plugins installed into $Profile profile. Restart dsh to load them."
exit 0