Skip to content

Commit

Permalink
feat: Use repository name as default color scheme (#60)
Browse files Browse the repository at this point in the history
  • Loading branch information
reobin committed Apr 2, 2024
1 parent 46f2192 commit 85e3682
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 5 deletions.
17 changes: 16 additions & 1 deletion internal/vim/vim.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import (
// GetVimColorSchemes returns vim color schemes found given a list of vim file URLs
func GetVimColorSchemes(githubRepository *gogithub.Repository, vimFiles []*gogithub.RepositoryContent) ([]repository.VimColorScheme, error) {
vimColorSchemes := []repository.VimColorScheme{}
repositoryName := strings.ToLower(githubRepository.GetName())
hasDefaultColorScheme := false

for _, vimFile := range vimFiles {
downloadURL := vimFile.GetDownloadURL()
Expand Down Expand Up @@ -47,6 +49,8 @@ func GetVimColorSchemes(githubRepository *gogithub.Repository, vimFiles []*gogit

lastCommitAt := github.GetFileLastCommitAt(githubRepository, vimFile)

hasDefaultColorScheme = hasDefaultColorScheme || strings.ToLower(vimColorSchemeName) == repositoryName

vimColorSchemes = append(vimColorSchemes,
repository.VimColorScheme{
Name: vimColorSchemeName,
Expand All @@ -61,6 +65,17 @@ func GetVimColorSchemes(githubRepository *gogithub.Repository, vimFiles []*gogit
return []repository.VimColorScheme{}, errors.New("no vim color schemes found")
}

if !hasDefaultColorScheme {
vimColorSchemes = append(vimColorSchemes,
repository.VimColorScheme{
Name: repositoryName,
FileURL: vimColorSchemes[0].FileURL,
IsLua: vimColorSchemes[0].IsLua,
LastCommitAt: github.GetLastCommitAt(githubRepository),
},
)
}

return vimColorSchemes, nil
}

Expand Down Expand Up @@ -132,7 +147,7 @@ func getVimColorSchemeName(fileContent *string) (string, error) {
func getLuaColorSchemeName(fileName string, fileContent *string) (string, error) {
lua := regexp.MustCompile("lua ")
if !lua.MatchString(*fileContent) && !strings.Contains(fileName, ".lua") {
return "", errors.New("No lua mentions")
return "", errors.New("no lua mentions")
}

requireColorSchemeName := regexp.MustCompile(`require\(['"]([a-zA-Z0-9-_ \(\)]+)['"]\)`)
Expand Down
55 changes: 51 additions & 4 deletions internal/vim/vim_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ func TestGetVimColorSchemes(t *testing.T) {
server2 := test.MockServer(fileContent2, http.StatusOK)
defer server2.Close()

repo := github.Repository{}
repoName := "test"
repo := github.Repository{Name: &repoName}
colorSchemes, err := GetVimColorSchemes(&repo, []*github.RepositoryContent{{DownloadURL: &server1.URL}, {DownloadURL: &server2.URL}})

if err != nil {
Expand Down Expand Up @@ -63,7 +64,8 @@ func TestGetVimColorSchemes(t *testing.T) {
server := test.MockServer(fileContent, http.StatusOK)
defer server.Close()

repo := github.Repository{}
repoName := "hello"
repo := github.Repository{Name: &repoName}
colorSchemes, err := GetVimColorSchemes(&repo, []*github.RepositoryContent{{DownloadURL: &server.URL}, {DownloadURL: &server.URL}})

if err != nil {
Expand Down Expand Up @@ -108,7 +110,8 @@ func TestGetVimColorSchemes(t *testing.T) {
server3 := test.MockServer(fileContent3, http.StatusOK)
defer server3.Close()

repo := github.Repository{}
repoName := "test"
repo := github.Repository{Name: &repoName}
colorSchemes, err := GetVimColorSchemes(&repo, []*github.RepositoryContent{{DownloadURL: &server1.URL}, {DownloadURL: &server2.URL}, {DownloadURL: &server3.URL}})

expectedVimColorSchemes := []repository.VimColorScheme{}
Expand Down Expand Up @@ -138,7 +141,8 @@ func TestGetVimColorSchemes(t *testing.T) {
defer server.Close()

wrongUrl := "wrong url"
repo := github.Repository{}
repoName := "test"
repo := github.Repository{Name: &repoName}
colorSchemes, err := GetVimColorSchemes(&repo, []*github.RepositoryContent{{DownloadURL: &server.URL}, {DownloadURL: &wrongUrl}})

if err != nil {
Expand All @@ -155,6 +159,49 @@ func TestGetVimColorSchemes(t *testing.T) {
t.Errorf("Incorrect result for GetVimColorSchemes, got: %s, want: %s", names, []string{"test"})
}
})

t.Run("should add the repository name as a color scheme if it is not already present", func(t *testing.T) {
fileContent1 := `
hi clear
syntax reset
let g:colors_name = "name1"
hi Normal cterm=97
`
fileContent2 := `
hi clear
syntax reset
let g:colors_name = "name2"
hi Normal cterm=97
`

server1 := test.MockServer(fileContent1, http.StatusOK)
defer server1.Close()

server2 := test.MockServer(fileContent2, http.StatusOK)
defer server2.Close()

repoName := "name3"
repo := github.Repository{Name: &repoName}
colorSchemes, err := GetVimColorSchemes(&repo, []*github.RepositoryContent{{DownloadURL: &server1.URL}, {DownloadURL: &server2.URL}})

if err != nil {
t.Errorf("Incorrect result for GetVimColorSchemes, got error: %s", err)
}

expectedVimColorSchemes := []repository.VimColorScheme{
{Name: "name1", FileURL: server1.URL},
{Name: "name2", FileURL: server2.URL},
{Name: "name3", FileURL: server1.URL},
}

if !reflect.DeepEqual(colorSchemes, expectedVimColorSchemes) {
var names []string
for _, colorScheme := range colorSchemes {
names = append(names, colorScheme.Name)
}
t.Errorf("Incorrect result for GetVimColorSchemes, got: %s, want: %s", names, []string{"test", "hello"})
}
})
}

func TestGetColorSchemeName(t *testing.T) {
Expand Down

0 comments on commit 85e3682

Please sign in to comment.