Skip to content

Commit ff4ba3e

Browse files
committed
Add script to internal package to generate swift colors from scss.
1 parent a6d23cc commit ff4ba3e

File tree

8 files changed

+2901
-119
lines changed

8 files changed

+2901
-119
lines changed

packages/fluster_developer/src/themes_rgb.json

Lines changed: 2745 additions & 0 deletions
Large diffs are not rendered by default.

packages/fluster_internal_workspace/cmd/generate_grpc_script.go

Lines changed: 0 additions & 40 deletions
This file was deleted.

packages/fluster_internal_workspace/cmd/root.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ var rootCmd = &cobra.Command{
3838
}
3939

4040
func init() {
41-
rootCmd.AddCommand(generateGrpcBuildScriptCmd)
4241
rootCmd.AddCommand(setDistributedVersionCmd)
4342
rootCmd.AddCommand(createCleanFeatureCmd)
4443
rootCmd.AddCommand(noCheckBindingsFileCmd)
768 Bytes
Binary file not shown.

packages/fluster_internal_workspace/internal/actions/generate_grpc_script.go

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,123 @@
11
package generate_swift_colors
22

3+
import (
4+
"bytes"
5+
"embed"
6+
"os"
7+
"strings"
8+
"text/template"
9+
10+
"github.com/charmbracelet/log"
11+
"github.com/tidwall/gjson"
12+
)
13+
14+
var (
15+
//go:embed "templates/*"
16+
templateFiles embed.FS
17+
)
18+
19+
func formatKey(k string) string {
20+
res := strings.ReplaceAll(k, "-", "_")
21+
return res
22+
}
23+
24+
type ColorGroup struct {
25+
Name string
26+
data gjson.Result
27+
}
28+
29+
func (c ColorGroup) Red() string {
30+
return c.data.Get("red").String()
31+
}
32+
33+
func (c ColorGroup) Green() string {
34+
return c.data.Get("green").String()
35+
}
36+
func (c ColorGroup) Blue() string {
37+
return c.data.Get("blue").String()
38+
}
39+
40+
type ThemeGroup struct {
41+
data gjson.Result
42+
colorKeys [22]string
43+
Name string
44+
DarkColors []ColorGroup
45+
LightColors []ColorGroup
46+
}
47+
348
func GenerateSwiftColors(output_path string) {
449
println("Generating swift colors...")
50+
inputPath := "/Users/bigsexy/Desktop/fluster/packages/fluster_developer/src/themes_rgb.json"
51+
inputData, err := os.ReadFile(inputPath)
52+
if err != nil {
53+
log.Fatal(err)
54+
}
55+
56+
colorKeys := [...]string{
57+
"background",
58+
"foreground",
59+
"card",
60+
"card-foreground",
61+
"popover",
62+
"popover-foreground",
63+
"primary",
64+
"primary-foreground",
65+
"secondary",
66+
"secondary-foreground",
67+
"muted",
68+
"muted-foreground",
69+
"accent",
70+
"accent-foreground",
71+
"destructive",
72+
"destructive-foreground",
73+
"border",
74+
"input",
75+
"ring",
76+
"brand",
77+
"radius",
78+
"general-link-color",
79+
}
80+
themes := []ThemeGroup{}
81+
jsonData := gjson.ParseBytes(inputData)
82+
jsonData.ForEach(func(key, value gjson.Result) bool {
83+
darkColors := []ColorGroup{}
84+
lightColors := []ColorGroup{}
85+
value.Get("light").ForEach(func(key, value gjson.Result) bool {
86+
lightColors = append(lightColors, ColorGroup{
87+
Name: formatKey(key.String()),
88+
data: value,
89+
})
90+
return true
91+
})
92+
value.Get("dark").ForEach(func(key, value gjson.Result) bool {
93+
darkColors = append(darkColors, ColorGroup{
94+
Name: formatKey(key.String()),
95+
data: value,
96+
})
97+
return true
98+
})
99+
themes = append(themes, ThemeGroup{
100+
data: value,
101+
colorKeys: colorKeys,
102+
LightColors: lightColors,
103+
DarkColors: darkColors,
104+
Name: strings.Title(key.String()),
105+
})
106+
return true
107+
})
108+
109+
templ, err := template.ParseFS(templateFiles, "templates/**")
110+
if err != nil {
111+
log.Fatal(err)
112+
}
113+
var buf bytes.Buffer
114+
err = templ.ExecuteTemplate(&buf, "swift_themeing_template.swift.txt", themes)
115+
if err != nil {
116+
log.Fatal(err)
117+
}
118+
err = os.WriteFile("/Users/bigsexy/Desktop/swift/Fluster/Fluster/Core/models/themeing/themes.swift", buf.Bytes(), 0777)
119+
if err != nil {
120+
log.Fatal(err)
121+
}
122+
5123
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import SwiftUI
2+
3+
// -- Dark Themes --
4+
5+
{{range .}}
6+
struct {{.Name}}Dark: ThemeProtocol {
7+
{{range .DarkColors}} var {{.Name}}: Color { return Color(red: {{.Red}}, green: {{.Green}}, blue: {{.Blue}}) }
8+
{{end}}
9+
}
10+
{{end}}
11+
12+
13+
// -- Light Themes --
14+
15+
{{range .}}
16+
struct {{.Name}}Light: ThemeProtocol {
17+
{{range .LightColors}} var {{.Name}}: Color { return Color(red: {{.Red}}, green: {{.Green}}, blue: {{.Blue}}) }
18+
{{end}}
19+
}
20+
{{end}}
21+
22+
23+
enum ThemeNames {
24+
{{range .}} case {{.Name}}
25+
{{end}}
26+
}
27+
28+
func getTheme(themeName: ThemeNames, darkMode: Bool) -> ThemeProtocol {
29+
switch themeName {
30+
{{range .}}case .{{.Name}}:
31+
if darkMode {
32+
return {{.Name}}Dark()
33+
} else {
34+
return {{.Name}}Light()
35+
}
36+
{{end}}
37+
}
38+
}

packages/fluster_internal_workspace/internal/actions/templates/grpc_build_script.gosh

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)