write.go

 1package assets
 2
 3import (
 4	"os"
 5	"path/filepath"
 6
 7	"github.com/kujtimiihoxha/termai/internal/config"
 8)
 9
10func WriteAssets() error {
11	appCfg := config.Get()
12	appWd := config.WorkingDirectory()
13	scriptDir := filepath.Join(
14		appWd,
15		appCfg.Data.Directory,
16		"diff",
17	)
18	scriptPath := filepath.Join(scriptDir, "index.mjs")
19	// Before, run the script in cmd/diff/main.go to build this file
20	if _, err := os.Stat(scriptPath); err != nil {
21		scriptData, err := FS.ReadFile("diff/index.mjs")
22		if err != nil {
23			return err
24		}
25
26		err = os.MkdirAll(scriptDir, 0o755)
27		if err != nil {
28			return err
29		}
30		err = os.WriteFile(scriptPath, scriptData, 0o755)
31		if err != nil {
32			return err
33		}
34	}
35
36	themeDir := filepath.Join(
37		appWd,
38		appCfg.Data.Directory,
39		"themes",
40	)
41
42	themePath := filepath.Join(themeDir, "dark.json")
43
44	if _, err := os.Stat(themePath); err != nil {
45		themeData, err := FS.ReadFile("diff/themes/dark.json")
46		if err != nil {
47			return err
48		}
49
50		err = os.MkdirAll(themeDir, 0o755)
51		if err != nil {
52			return err
53		}
54		err = os.WriteFile(themePath, themeData, 0o755)
55		if err != nil {
56			return err
57		}
58	}
59	return nil
60}