71 lines
2.6 KiB
PowerShell
71 lines
2.6 KiB
PowerShell
$ErrorActionPreference = "Stop"
|
|||
|
|
|
||
|
|
function Install-WingetPackageIfMissing {
|
||
|
|
param(
|
||
|
|
[string]$Command,
|
||
|
|
[string]$PackageId
|
||
|
|
)
|
||
|
|
|
||
|
|
if (Get-Command $Command -ErrorAction SilentlyContinue) {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
if (-not (Get-Command winget.exe -ErrorAction SilentlyContinue)) {
|
||
|
|
throw "winget не найден. Обновите Windows App Installer и повторите установку."
|
||
|
|
}
|
||
|
|
|
||
|
|
winget install --id $PackageId -e --accept-package-agreements --accept-source-agreements
|
||
|
|
if ($LASTEXITCODE -ne 0) {
|
||
|
|
throw "Не удалось установить пакет $PackageId."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Install-WingetPackageIfMissing "git.exe" "Git.Git"
|
||
|
|
Install-WingetPackageIfMissing "npm.cmd" "OpenJS.NodeJS.LTS"
|
||
|
|
|
||
|
|
$env:Path = "$env:ProgramFiles\Git\cmd;$env:ProgramFiles\nodejs;$env:APPDATA\npm;$env:Path"
|
||
|
|
$npm = Get-Command npm.cmd -ErrorAction SilentlyContinue
|
||
|
|
if (-not $npm) {
|
||
|
|
throw "Node.js установлен, но npm не найден. Перезапустите PowerShell и повторите команду."
|
||
|
|
}
|
||
|
|
|
||
|
|
$codex = Get-Command codex.cmd -ErrorAction SilentlyContinue
|
||
|
|
if (-not $codex) {
|
||
|
|
& $npm.Source install --global "@openai/codex"
|
||
|
|
if ($LASTEXITCODE -ne 0) {
|
||
|
|
throw "Не удалось установить Codex CLI."
|
||
|
|
}
|
||
|
|
|
||
|
|
$npmPrefix = (& $npm.Source config get prefix).Trim()
|
||
|
|
$env:Path = "$npmPrefix;$env:Path"
|
||
|
|
$codex = Get-Command codex.cmd -ErrorAction SilentlyContinue
|
||
|
|
}
|
||
|
|
|
||
|
|
if (-not $codex) {
|
||
|
|
throw "Codex CLI установлен, но команда codex не найдена. Перезапустите PowerShell и повторите установку."
|
||
|
|
}
|
||
|
|
|
||
|
|
$marketplaceName = "logos-company-plugins"
|
||
|
|
$marketplaceUrl = "https://dev.ast.ltr.kz/Logos/codex-plugins.git"
|
||
|
|
$pluginId = "tax-code-research@$marketplaceName"
|
||
|
|
|
||
|
|
$marketplaces = (& $codex.Source plugin marketplace list --json | ConvertFrom-Json).marketplaces
|
||
|
|
if ($marketplaces.name -contains $marketplaceName) {
|
||
|
|
& $codex.Source plugin marketplace upgrade $marketplaceName
|
||
|
|
} else {
|
||
|
|
& $codex.Source plugin marketplace add $marketplaceUrl --ref main
|
||
|
|
}
|
||
|
|
if ($LASTEXITCODE -ne 0) {
|
||
|
|
throw "Не удалось подключить marketplace $marketplaceName."
|
||
|
|
}
|
||
|
|
|
||
|
|
$installed = (& $codex.Source plugin list --json | ConvertFrom-Json).installed
|
||
|
|
if ($installed.pluginId -notcontains $pluginId) {
|
||
|
|
& $codex.Source plugin add $pluginId
|
||
|
|
if ($LASTEXITCODE -ne 0) {
|
||
|
|
throw "Не удалось установить плагин $pluginId."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Write-Host "Готово. Перезапустите ChatGPT Desktop или откройте новый рабочий чат." -ForegroundColor Green
|