chore: fix mise envs panel
This commit is contained in:
@@ -96,3 +96,24 @@ func (c *MiseController) UseGlobal(ctx *gin.Context) {
|
|||||||
}
|
}
|
||||||
utils.Success(ctx, nil)
|
utils.Success(ctx, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnsetGlobal 取消全局默认版本
|
||||||
|
func (c *MiseController) UnsetGlobal(ctx *gin.Context) {
|
||||||
|
var req struct {
|
||||||
|
Plugin string `json:"plugin"`
|
||||||
|
Version string `json:"version"`
|
||||||
|
}
|
||||||
|
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||||
|
utils.BadRequest(ctx, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if req.Plugin == "" {
|
||||||
|
utils.BadRequest(ctx, "参数 plugin 不能为空")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := c.service.UnsetGlobal(req.Plugin, req.Version); err != nil {
|
||||||
|
utils.ServerError(ctx, "取消全局版本失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
utils.Success(ctx, nil)
|
||||||
|
}
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ func registerMiseRoutes(g *gin.RouterGroup, c *Controllers) {
|
|||||||
mise.GET("/versions", c.Mise.Versions)
|
mise.GET("/versions", c.Mise.Versions)
|
||||||
mise.GET("/verify-cmd", c.Mise.VerifyCommand)
|
mise.GET("/verify-cmd", c.Mise.VerifyCommand)
|
||||||
mise.POST("/use-global", c.Mise.UseGlobal)
|
mise.POST("/use-global", c.Mise.UseGlobal)
|
||||||
|
mise.POST("/unset-global", c.Mise.UnsetGlobal)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -340,3 +340,19 @@ func (s *MiseService) UseGlobal(plugin, version string) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnsetGlobal 取消全局默认版本
|
||||||
|
func (s *MiseService) UnsetGlobal(plugin, version string) error {
|
||||||
|
// 使用 mise unuse -g <tool>@<version> 移出全局配置
|
||||||
|
target := plugin
|
||||||
|
if version != "" {
|
||||||
|
target = fmt.Sprintf("%s@%s", plugin, version)
|
||||||
|
}
|
||||||
|
cmd := exec.Command("mise", "unuse", "-g", target)
|
||||||
|
cmd.Env = os.Environ()
|
||||||
|
output, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("mise unuse global failed: %v, output: %s", err, string(output))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -268,7 +268,8 @@ export const api = {
|
|||||||
plugins: () => request<string[]>('/mise/plugins'),
|
plugins: () => request<string[]>('/mise/plugins'),
|
||||||
versions: (plugin: string) => request<string[]>(`/mise/versions?plugin=${plugin}`),
|
versions: (plugin: string) => request<string[]>(`/mise/versions?plugin=${plugin}`),
|
||||||
verifyCommand: (plugin: string, version: string) => request<{ command: string }>(`/mise/verify-cmd?plugin=${plugin}&version=${version}`),
|
verifyCommand: (plugin: string, version: string) => request<{ command: string }>(`/mise/verify-cmd?plugin=${plugin}&version=${version}`),
|
||||||
useGlobal: (plugin: string, version: string) => request<void>('/mise/use-global', { method: 'POST', body: JSON.stringify({ plugin, version }) })
|
useGlobal: (plugin: string, version: string) => request<void>('/mise/use-global', { method: 'POST', body: JSON.stringify({ plugin, version }) }),
|
||||||
|
unsetGlobal: (plugin: string, version: string) => request<void>('/mise/unset-global', { method: 'POST', body: JSON.stringify({ plugin, version }) })
|
||||||
},
|
},
|
||||||
terminal: {
|
terminal: {
|
||||||
cmds: () => request<{ name: string, description: string }[]>('/terminal/cmds')
|
cmds: () => request<{ name: string, description: string }[]>('/terminal/cmds')
|
||||||
|
|||||||
@@ -245,13 +245,18 @@ async function handleVerify(lang: MiseLanguage) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleSetDefault(lang: MiseLanguage) {
|
async function toggleDefault(lang: MiseLanguage) {
|
||||||
try {
|
try {
|
||||||
await api.mise.useGlobal(lang.plugin, lang.version)
|
if (lang.is_global) {
|
||||||
toast.success(`已将 ${lang.plugin} ${lang.version} 设为全局默认版本`)
|
await api.mise.unsetGlobal(lang.plugin, lang.version)
|
||||||
|
toast.success(`已取消 ${lang.plugin} 的全局默认设置`)
|
||||||
|
} else {
|
||||||
|
await api.mise.useGlobal(lang.plugin, lang.version)
|
||||||
|
toast.success(`已将 ${lang.plugin} ${lang.version} 设为全局默认版本`)
|
||||||
|
}
|
||||||
await loadLanguages()
|
await loadLanguages()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
toast.error('设置默认版本失败: ' + e)
|
toast.error('操作失败: ' + e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,9 +369,10 @@ onMounted(loadLanguages)
|
|||||||
@click="handleVerify(lang)">
|
@click="handleVerify(lang)">
|
||||||
环境验证
|
环境验证
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="outline" size="sm" class="whitespace-nowrap flex-1 sm:flex-none"
|
<Button variant="outline" size="sm"
|
||||||
:disabled="lang.isGlobal" @click="handleSetDefault(lang)">
|
:class="cn('whitespace-nowrap flex-1 sm:flex-none', lang.isGlobal && 'text-amber-600 border-amber-500/50 bg-amber-500/5 hover:bg-amber-500/10')"
|
||||||
设为默认
|
@click="toggleDefault(lang)">
|
||||||
|
{{ lang.isGlobal ? '取消默认' : '设为默认' }}
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="ghost" size="icon"
|
<Button variant="ghost" size="icon"
|
||||||
class="text-destructive h-8 w-8 shrink-0 ml-auto sm:ml-0" @click="confirmDelete(lang)"
|
class="text-destructive h-8 w-8 shrink-0 ml-auto sm:ml-0" @click="confirmDelete(lang)"
|
||||||
|
|||||||
Reference in New Issue
Block a user