Skip to content

Commit 583287f

Browse files
committed
chore: fix mise envs panel
1 parent 5310c54 commit 583287f

5 files changed

Lines changed: 53 additions & 8 deletions

File tree

internal/controllers/mise_controller.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,24 @@ func (c *MiseController) UseGlobal(ctx *gin.Context) {
9696
}
9797
utils.Success(ctx, nil)
9898
}
99+
100+
// UnsetGlobal 取消全局默认版本
101+
func (c *MiseController) UnsetGlobal(ctx *gin.Context) {
102+
var req struct {
103+
Plugin string `json:"plugin"`
104+
Version string `json:"version"`
105+
}
106+
if err := ctx.ShouldBindJSON(&req); err != nil {
107+
utils.BadRequest(ctx, "参数错误: "+err.Error())
108+
return
109+
}
110+
if req.Plugin == "" {
111+
utils.BadRequest(ctx, "参数 plugin 不能为空")
112+
return
113+
}
114+
if err := c.service.UnsetGlobal(req.Plugin, req.Version); err != nil {
115+
utils.ServerError(ctx, "取消全局版本失败: "+err.Error())
116+
return
117+
}
118+
utils.Success(ctx, nil)
119+
}

internal/router/api_routes.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ func registerMiseRoutes(g *gin.RouterGroup, c *Controllers) {
211211
mise.GET("/versions", c.Mise.Versions)
212212
mise.GET("/verify-cmd", c.Mise.VerifyCommand)
213213
mise.POST("/use-global", c.Mise.UseGlobal)
214+
mise.POST("/unset-global", c.Mise.UnsetGlobal)
214215
}
215216
}
216217

internal/services/mise_service.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,3 +340,19 @@ func (s *MiseService) UseGlobal(plugin, version string) error {
340340
}
341341
return nil
342342
}
343+
344+
// UnsetGlobal 取消全局默认版本
345+
func (s *MiseService) UnsetGlobal(plugin, version string) error {
346+
// 使用 mise unuse -g <tool>@<version> 移出全局配置
347+
target := plugin
348+
if version != "" {
349+
target = fmt.Sprintf("%s@%s", plugin, version)
350+
}
351+
cmd := exec.Command("mise", "unuse", "-g", target)
352+
cmd.Env = os.Environ()
353+
output, err := cmd.CombinedOutput()
354+
if err != nil {
355+
return fmt.Errorf("mise unuse global failed: %v, output: %s", err, string(output))
356+
}
357+
return nil
358+
}

web/src/api/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,8 @@ export const api = {
268268
plugins: () => request<string[]>('/mise/plugins'),
269269
versions: (plugin: string) => request<string[]>(`/mise/versions?plugin=${plugin}`),
270270
verifyCommand: (plugin: string, version: string) => request<{ command: string }>(`/mise/verify-cmd?plugin=${plugin}&version=${version}`),
271-
useGlobal: (plugin: string, version: string) => request<void>('/mise/use-global', { method: 'POST', body: JSON.stringify({ plugin, version }) })
271+
useGlobal: (plugin: string, version: string) => request<void>('/mise/use-global', { method: 'POST', body: JSON.stringify({ plugin, version }) }),
272+
unsetGlobal: (plugin: string, version: string) => request<void>('/mise/unset-global', { method: 'POST', body: JSON.stringify({ plugin, version }) })
272273
},
273274
terminal: {
274275
cmds: () => request<{ name: string, description: string }[]>('/terminal/cmds')

web/src/views/languages/Languages.vue

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,13 +245,18 @@ async function handleVerify(lang: MiseLanguage) {
245245
}
246246
}
247247
248-
async function handleSetDefault(lang: MiseLanguage) {
248+
async function toggleDefault(lang: MiseLanguage) {
249249
try {
250-
await api.mise.useGlobal(lang.plugin, lang.version)
251-
toast.success(`已将 ${lang.plugin} ${lang.version} 设为全局默认版本`)
250+
if (lang.is_global) {
251+
await api.mise.unsetGlobal(lang.plugin, lang.version)
252+
toast.success(`已取消 ${lang.plugin} 的全局默认设置`)
253+
} else {
254+
await api.mise.useGlobal(lang.plugin, lang.version)
255+
toast.success(`已将 ${lang.plugin} ${lang.version} 设为全局默认版本`)
256+
}
252257
await loadLanguages()
253258
} catch (e) {
254-
toast.error('设置默认版本失败: ' + e)
259+
toast.error('操作失败: ' + e)
255260
}
256261
}
257262
@@ -364,9 +369,10 @@ onMounted(loadLanguages)
364369
@click="handleVerify(lang)">
365370
环境验证
366371
</Button>
367-
<Button variant="outline" size="sm" class="whitespace-nowrap flex-1 sm:flex-none"
368-
:disabled="lang.isGlobal" @click="handleSetDefault(lang)">
369-
设为默认
372+
<Button variant="outline" size="sm"
373+
: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')"
374+
@click="toggleDefault(lang)">
375+
{{ lang.isGlobal ? '取消默认' : '设为默认' }}
370376
</Button>
371377
<Button variant="ghost" size="icon"
372378
class="text-destructive h-8 w-8 shrink-0 ml-auto sm:ml-0" @click="confirmDelete(lang)"

0 commit comments

Comments
 (0)