aboutsummaryrefslogtreecommitdiff
path: root/pkg/service/git.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/service/git.go')
-rw-r--r--pkg/service/git.go51
1 files changed, 37 insertions, 14 deletions
diff --git a/pkg/service/git.go b/pkg/service/git.go
index 0415cee..94ca75e 100644
--- a/pkg/service/git.go
+++ b/pkg/service/git.go
@@ -1,30 +1,53 @@
package service
-import "fmt"
+import (
+ "path"
+
+ "git.gabrielgio.me/cerrado/pkg/git"
+)
type (
- GitService struct{}
+ GitService struct {
+ server *git.GitServerRepository
+ }
Repository struct {
- Name string
- Title string
- Description string
+ Name string
+ Title string
+ LastCommitMessage string
+ LastCommitDate string
}
)
-func NewGitService() *GitService {
- return &GitService{}
+// TODO: make it configurable
+const timeFormat = "2006.01.02 15:04:05"
+
+func NewGitService(server *git.GitServerRepository) *GitService {
+ return &GitService{
+ server: server,
+ }
}
-func (g *GitService) ListRepositories() []*Repository {
- repos := make([]*Repository, 10)
+func (g *GitService) ListRepositories() ([]*Repository, error) {
+ rs, err := g.server.List()
+ if err != nil {
+ return nil, err
+ }
+
+ repos := make([]*Repository, len(rs))
+ for i, r := range rs {
+ obj, err := r.LastCommit()
+ if err != nil {
+ return nil, err
+ }
- for i := range 10 {
+ baseName := path.Base(r.Path())
repos[i] = &Repository{
- Name: fmt.Sprintf("repository-%d", i),
- Title: fmt.Sprintf("Repository %d", i),
- Description: fmt.Sprintf("This is a description for repository %d", i),
+ Name: baseName,
+ Title: baseName,
+ LastCommitMessage: obj.Message,
+ LastCommitDate: obj.Author.When.Format(timeFormat),
}
}
- return repos
+ return repos, nil
}