71 lines
2.6 KiB
PowerShell
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 |