cerrado @ 3d8637838e9ccfcb56899842945e760f337428b0

 1package service
 2
 3import (
 4	"path"
 5
 6	"git.gabrielgio.me/cerrado/pkg/git"
 7)
 8
 9type (
10	GitService struct {
11		server *git.GitServerRepository
12	}
13	Repository struct {
14		Name              string
15		Title             string
16		LastCommitMessage string
17		LastCommitDate    string
18	}
19)
20
21// TODO: make it configurable
22const timeFormat = "2006.01.02 15:04:05"
23
24func NewGitService(server *git.GitServerRepository) *GitService {
25	return &GitService{
26		server: server,
27	}
28}
29
30func (g *GitService) ListRepositories() ([]*Repository, error) {
31	rs, err := g.server.List()
32	if err != nil {
33		return nil, err
34	}
35
36	repos := make([]*Repository, len(rs))
37	for i, r := range rs {
38		obj, err := r.LastCommit()
39		if err != nil {
40			return nil, err
41		}
42
43		baseName := path.Base(r.Path())
44		repos[i] = &Repository{
45			Name:              baseName,
46			Title:             baseName,
47			LastCommitMessage: obj.Message,
48			LastCommitDate:    obj.Author.When.Format(timeFormat),
49		}
50	}
51
52	return repos, nil
53}