Skip to content

Commit 75e78dd

Browse files
committed
feat(generate): Store colorscheme variants from data
1 parent 06cce85 commit 75e78dd

File tree

1 file changed

+60
-58
lines changed

1 file changed

+60
-58
lines changed

cli/generate.go

Lines changed: 60 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,35 @@
11
package cli
22

33
import (
4+
"context"
45
"encoding/json"
56
"fmt"
67
"log"
78
"os"
89
"os/exec"
910
"strings"
10-
"time"
1111

12+
"github.com/vimcolorschemes/worker/internal/database"
1213
file "github.com/vimcolorschemes/worker/internal/file"
13-
repoHelper "github.com/vimcolorschemes/worker/internal/repository"
14-
15-
"go.mongodb.org/mongo-driver/bson"
14+
"github.com/vimcolorschemes/worker/internal/store"
1615
)
1716

17+
type ColorschemeData struct {
18+
Light []store.ColorschemeGroupDefinition
19+
Dark []store.ColorschemeGroupDefinition
20+
}
21+
22+
type ColorschemeGroupDefinition struct {
23+
Name string
24+
HexCode string
25+
}
26+
27+
var colorschemeVariantStore *store.ColorschemeVariantStore
28+
29+
func init() {
30+
colorschemeVariantStore = store.NewColorschemeVariantStore(database.Connect())
31+
}
32+
1833
var tmpDirectoryPath string
1934
var packDirectoryPath string
2035
var vimrcPath string
@@ -32,85 +47,79 @@ func Generate(force bool, debug bool, repoKey string) int {
3247

3348
fmt.Println()
3449

35-
var repositories []repoHelper.Repository
50+
var repositories []store.Repository
3651
if repoKey != "" {
37-
// repository, err := database.GetRepository(repoKey)
38-
// if err != nil {
39-
// log.Panic(err)
40-
// }
41-
// repositories = []repoHelper.Repository{repository}
42-
} else if force || debug {
43-
// repositories = database.GetRepositories()
52+
repository, err := repositoryStore.GetByKey(context.TODO(), repoKey)
53+
if err != nil {
54+
log.Panic(err)
55+
}
56+
repositories = []store.Repository{*repository}
4457
} else {
45-
// repositories = database.GetRepositoriesToGenerate()
58+
repositories = repositoryStore.GetAll()
4659
}
4760

4861
log.Printf("Generating vim preview for %d repositories", len(repositories))
4962

5063
for index, repository := range repositories {
51-
log.Print("\nGenerating vim previews for ", repository.Owner.Name, "/", repository.Name, " (", index+1, "/", len(repositories), ")")
64+
log.Print("\nGenerating vim previews for ", repository.Owner, "/", repository.Name, " (", index+1, "/", len(repositories), ")")
5265

53-
key := fmt.Sprintf("%s__%s", repository.Owner.Name, repository.Name)
66+
key := fmt.Sprintf("%s__%s", repository.Owner, repository.Name)
5467
err := installPlugin(repository.GithubURL, key)
5568
if err != nil {
5669
log.Printf("Error installing plugin: %s", err)
57-
repository.GenerateValid = false
58-
updateRepositoryAfterGenerate(repository)
70+
// repository.GenerateValid = false
71+
// updateRepositoryAfterGenerate(repository)
5972
continue
6073
}
6174

62-
var data, dataError = getVimColorSchemeColorData()
75+
var dataMap, dataError = getColorschemeDataMap()
6376
err = deletePlugin(key)
6477
if err != nil {
6578
log.Printf("Error deleting plugin: %s", err)
6679
}
6780
if dataError != nil {
6881
log.Printf("Error getting color data: %s", dataError)
69-
repository.GenerateValid = false
70-
updateRepositoryAfterGenerate(repository)
82+
// repository.GenerateValid = false
83+
// updateRepositoryAfterGenerate(repository)
7184
continue
7285
}
7386

74-
var vimColorSchemes []repoHelper.VimColorScheme
75-
76-
for name := range data {
87+
for name := range dataMap {
7788
if name == "default" || name == "module-injection" || name == "tick_tock" {
7889
continue
7990
}
8091

81-
var backgrounds []repoHelper.VimBackgroundValue
82-
if data[name].Light != nil {
83-
backgrounds = append(backgrounds, repoHelper.LightBackground)
84-
}
85-
if data[name].Dark != nil {
86-
backgrounds = append(backgrounds, repoHelper.DarkBackground)
92+
if dataMap[name].Light != nil {
93+
err = colorschemeVariantStore.UpsertColorschemeVariant(context.TODO(), &store.ColorschemeVariant{
94+
Name: name,
95+
RepositoryID: repository.ID,
96+
Background: store.BackgroundLight,
97+
ColorData: dataMap[name].Light,
98+
})
99+
if err != nil {
100+
log.Printf("Error upserting colorscheme variant: %s", err)
101+
}
87102
}
88103

89-
vimColorSchemes = append(
90-
vimColorSchemes,
91-
repoHelper.VimColorScheme{
92-
Name: name,
93-
Data: data[name],
94-
Backgrounds: backgrounds,
104+
if dataMap[name].Dark != nil {
105+
err = colorschemeVariantStore.UpsertColorschemeVariant(context.TODO(), &store.ColorschemeVariant{
106+
Name: name,
107+
RepositoryID: repository.ID,
108+
Background: store.BackgroundDark,
109+
ColorData: dataMap[name].Dark,
95110
})
111+
if err != nil {
112+
log.Printf("Error upserting colorscheme variant: %s", err)
113+
}
114+
}
96115
}
97-
98-
repository.VimColorSchemes = vimColorSchemes
99-
repository.GenerateValid = len(repository.VimColorSchemes) > 0
100-
updateRepositoryAfterGenerate(repository)
101116
}
102117

103118
cleanUp()
104119

105120
return len(repositories)
106121
}
107122

108-
func updateRepositoryAfterGenerate(repository repoHelper.Repository) {
109-
log.Printf("Generate valid: %v", repository.GenerateValid)
110-
// generateObject := getGenerateRepositoryObject(repository)
111-
// database.UpsertRepository(repository.ID, generateObject)
112-
}
113-
114123
// Initializes a temporary directory for vim configuration files
115124
func initVimFiles() {
116125
workingDirectory, err := os.Getwd()
@@ -258,22 +267,23 @@ func deletePlugin(key string) error {
258267
return err
259268
}
260269

261-
// Gathers the colorscheme data from vimcolorschemes/extractor.nvim
262-
func getVimColorSchemeColorData() (map[string]repoHelper.VimColorSchemeData, error) {
270+
// Gathers the colorscheme data from vimcolorschemes/extractor.nvim mapped by
271+
// colorscheme name
272+
func getColorschemeDataMap() (map[string]ColorschemeData, error) {
263273
err := executePreviewGenerator()
264274
if err != nil {
265275
log.Printf("Error executing nvim: %s", err)
266276
return nil, err
267277
}
268278

269-
vimColorSchemeOutput, err := file.GetLocalFileContent(colorDataFilePath)
279+
colorschemeOutput, err := file.GetLocalFileContent(colorDataFilePath)
270280
if err != nil {
271281
log.Printf("Error getting local file content from \"%s\": %s", colorDataFilePath, err)
272282
return nil, err
273283
}
274284

275-
var data map[string]repoHelper.VimColorSchemeData
276-
err = json.Unmarshal([]byte(vimColorSchemeOutput), &data)
285+
var data map[string]ColorschemeData
286+
err = json.Unmarshal([]byte(colorschemeOutput), &data)
277287
if err != nil {
278288
return nil, err
279289
}
@@ -324,11 +334,3 @@ func cleanUp() {
324334
log.Panic(err)
325335
}
326336
}
327-
328-
func getGenerateRepositoryObject(repository repoHelper.Repository) bson.M {
329-
return bson.M{
330-
"vimColorSchemes": repository.VimColorSchemes,
331-
"generateValid": repository.GenerateValid,
332-
"generatedAt": time.Now(),
333-
}
334-
}

0 commit comments

Comments
 (0)