Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 6 additions & 15 deletions cli/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,16 @@ func Generate(force bool, debug bool, repoKey string) bson.M {
log.Panic(err)
}
repositories = []repoHelper.Repository{repository}
} else if force {
repositories = database.GetRepositories()
} else {
repositories = database.GetValidRepositories()
repositories = database.GetRepositoriesToGenerate()
}

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

var generateCount int

for _, repository := range repositories {
fmt.Println()

log.Print("Generating vim previews for ", repository.Owner.Name, "/", repository.Name)

if !force && repository.GeneratedAt.After(repository.GithubUpdatedAt) {
log.Print("Repository is not due for a generate")
continue
}

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

key := fmt.Sprintf("%s__%s", repository.Owner.Name, repository.Name)
err := installPlugin(repository.GithubURL, key)
Expand Down Expand Up @@ -112,7 +103,7 @@ func Generate(force bool, debug bool, repoKey string) bson.M {

cleanUp()

return bson.M{"repositoryCount": generateCount}
return bson.M{"repositoryCount": len(repositories)}
}

func updateRepositoryAfterGenerate(repository repoHelper.Repository) {
Expand Down
1 change: 1 addition & 0 deletions cli/import.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,5 +78,6 @@ func getImportRepositoryObject(repository *gogithub.Repository) bson.M {
"description": repository.GetDescription(),
"githubURL": repository.GetHTMLURL(),
"githubCreatedAt": repository.GetCreatedAt().Time,
"pushedAt": repository.GetPushedAt().Time,
}
}
4 changes: 2 additions & 2 deletions cli/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func updateRepository(repository repoHelper.Repository) repoHelper.Repository {
return repository
}

repository.GithubUpdatedAt = githubRepository.UpdatedAt.Time
repository.PushedAt = githubRepository.PushedAt.Time

log.Print("Gathering basic infos")
repository.StargazersCount = *githubRepository.StargazersCount
Expand All @@ -70,7 +70,7 @@ func updateRepository(repository repoHelper.Repository) repoHelper.Repository {

func getUpdateRepositoryObject(repository repoHelper.Repository) bson.M {
return bson.M{
"githubUpdatedAt": repository.GithubUpdatedAt,
"pushedAt": repository.PushedAt,
"stargazersCount": repository.StargazersCount,
"stargazersCountHistory": repository.StargazersCountHistory,
"weekStargazersCount": repository.WeekStargazersCount,
Expand Down
7 changes: 4 additions & 3 deletions internal/database/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,10 @@ func GetRepository(repoKey string) (repository.Repository, error) {
return repo, nil
}

// GetValidRepositories gets repositories stored in the database that are marked as valid
func GetValidRepositories() []repository.Repository {
return getRepositories(bson.M{"updateValid": true})
// GetRepositoriesToGenerate gets all repositories that are due for a preview
// generate.
func GetRepositoriesToGenerate() []repository.Repository {
return getRepositories(bson.M{"updateValid": true, "$expr": bson.M{"$gt": []string{"$pushedAt", "$generatedAt"}}})
}

func getRepositories(filter bson.M) []repository.Repository {
Expand Down
6 changes: 3 additions & 3 deletions internal/repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ type Repository struct {
StargazersCountHistory []StargazersCountHistoryItem `bson:"stargazersCountHistory"`
WeekStargazersCount int `bson:"weekStargazersCount"`
GithubCreatedAt time.Time `bson:"githubCreatedAt"`
GithubUpdatedAt time.Time `bson:"githubUpdatedAt"`
PushedAt time.Time `bson:"pushedAt"`
VimColorSchemes []VimColorScheme `bson:"vimColorSchemes,omitempty"`
UpdateValid bool `bson:"updateValid"`
UpdatedAt time.Time `bson:"updatedAt"`
Expand Down Expand Up @@ -152,8 +152,8 @@ func (repository Repository) ComputeTrendingStargazersCount(dayCount int) int {
// valid from our standards after an update job
func (repository Repository) IsValidAfterUpdate() bool {
var defaultTime time.Time
if repository.GithubUpdatedAt == defaultTime {
log.Print("Repository last commit at is not valid")
if repository.PushedAt == defaultTime {
log.Print("Repository last commit date is not valid")
return false
}

Expand Down
8 changes: 4 additions & 4 deletions internal/repository/repository_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ func TestComputeTrendingStargazersCount(t *testing.T) {
func TestComputeRepositoryValidityAfterUpdate(t *testing.T) {
t.Run("should return valid for a repository that checks all boxes", func(t *testing.T) {
var repository Repository
repository.GithubUpdatedAt = time.Now()
repository.PushedAt = time.Now()
repository.StargazersCount = 1
repository.StargazersCountHistory = []StargazersCountHistoryItem{{Date: dateUtil.Today(), StargazersCount: 1}}

Expand All @@ -340,7 +340,7 @@ func TestComputeRepositoryValidityAfterUpdate(t *testing.T) {

t.Run("should return invalid for a repository with a non strictly positive stargazers count", func(t *testing.T) {
var repository Repository
repository.GithubUpdatedAt = time.Now()
repository.PushedAt = time.Now()
repository.StargazersCount = 0
repository.StargazersCountHistory = []StargazersCountHistoryItem{{Date: dateUtil.Today(), StargazersCount: 1}}
repository.VimColorSchemes = []VimColorScheme{{Name: "test"}}
Expand All @@ -353,7 +353,7 @@ func TestComputeRepositoryValidityAfterUpdate(t *testing.T) {

t.Run("should return invalid for a repository with an empty stargazers count history", func(t *testing.T) {
var repository Repository
repository.GithubUpdatedAt = time.Now()
repository.PushedAt = time.Now()
repository.StargazersCount = 1
repository.StargazersCountHistory = []StargazersCountHistoryItem{}
repository.VimColorSchemes = []VimColorScheme{{Name: "test"}}
Expand All @@ -366,7 +366,7 @@ func TestComputeRepositoryValidityAfterUpdate(t *testing.T) {

t.Run("should return invalid for a repository with an outdated stargazers count history", func(t *testing.T) {
var repository Repository
repository.GithubUpdatedAt = time.Now()
repository.PushedAt = time.Now()
repository.StargazersCount = 1
date := time.Date(1990, time.November, 01, 0, 0, 0, 0, time.UTC)
repository.StargazersCountHistory = []StargazersCountHistoryItem{{Date: date, StargazersCount: 1}}
Expand Down
Loading