11package cli
22
33import (
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+
1833var tmpDirectoryPath string
1934var packDirectoryPath string
2035var 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 ("\n Generating vim previews for " , repository .Owner . Name , "/" , repository .Name , " (" , index + 1 , "/" , len (repositories ), ")" )
64+ log .Print ("\n Generating 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
115124func 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