1package cli
2
3import (
4 "fmt"
5 "os"
6 "os/exec"
7 "path/filepath"
8)
9
10// RunConfig handles `matcha config [plugin_name]`.
11func RunConfig(args []string) error {
12 editor := os.Getenv("EDITOR")
13 if editor == "" {
14 editor = "vi"
15 }
16
17 home, err := os.UserHomeDir()
18 if err != nil {
19 return fmt.Errorf("cannot find home directory: %w", err)
20 }
21
22 var target string
23 if len(args) == 0 {
24 target = filepath.Join(home, ".config", "matcha", "config.json")
25 } else {
26 name := args[0]
27 // Add .lua extension if not present
28 if filepath.Ext(name) != ".lua" {
29 name += ".lua"
30 }
31 target = filepath.Join(home, ".config", "matcha", "plugins", name)
32 }
33
34 if _, err := os.Stat(target); os.IsNotExist(err) {
35 return fmt.Errorf("file not found: %s", target)
36 }
37
38 cmd := exec.Command(editor, target) //nolint:gosec,noctx
39 cmd.Stdin = os.Stdin
40 cmd.Stdout = os.Stdout
41 cmd.Stderr = os.Stderr
42 return cmd.Run()
43}