Files
seanime-docker/seanime-2.9.10/internal/handlers/explorer.go
2025-09-20 14:08:38 +01:00

60 lines
1.1 KiB
Go

package handlers
import (
"os"
"runtime"
"seanime/internal/util"
"strings"
"github.com/labstack/echo/v4"
)
// HandleOpenInExplorer
//
// @summary opens the given directory in the file explorer.
// @desc It returns 'true' whether the operation was successful or not.
// @route /api/v1/open-in-explorer [POST]
// @returns bool
func (h *Handler) HandleOpenInExplorer(c echo.Context) error {
type body struct {
Path string `json:"path"`
}
p := new(body)
if err := c.Bind(p); err != nil {
return h.RespondWithError(c, err)
}
OpenDirInExplorer(p.Path)
return h.RespondWithData(c, true)
}
func OpenDirInExplorer(dir string) {
if dir == "" {
return
}
cmd := ""
var args []string
switch runtime.GOOS {
case "windows":
cmd = "explorer"
args = []string{strings.ReplaceAll(strings.ToLower(dir), "/", "\\")}
case "darwin":
cmd = "open"
args = []string{dir}
case "linux":
cmd = "xdg-open"
args = []string{dir}
default:
return
}
cmdObj := util.NewCmd(cmd, args...)
cmdObj.Stdout = os.Stdout
cmdObj.Stderr = os.Stderr
_ = cmdObj.Run()
}