1package bug
2
3import (
4 "encoding/json"
5 "github.com/MichaelMure/git-bug/repository"
6 "github.com/pkg/errors"
7)
8
9type Person struct {
10 Name string `json:"name"`
11 Email string `json:"email"`
12}
13
14// GetUser will query the repository for user detail and build the corresponding Person
15func GetUser(repo repository.Repo) (Person, error) {
16 name, err := repo.GetUserName()
17 if err != nil {
18 return Person{}, err
19 }
20 if name == "" {
21 return Person{}, errors.New("User name is not configured in git yet. Please use `git config --global user.name \"John Doe\"`")
22 }
23
24 email, err := repo.GetUserEmail()
25 if err != nil {
26 return Person{}, err
27 }
28 if email == "" {
29 return Person{}, errors.New("User name is not configured in git yet. Please use `git config --global user.email johndoe@example.com`")
30 }
31
32 return Person{Name: name, Email: email}, nil
33}
34
35// Store will convert the Person to JSON and store it in the internal git datastore
36// Return the git hash handle of the data
37func (person *Person) Store(repo repository.Repo) (repository.Hash, error) {
38
39 data, err := json.Marshal(person)
40
41 if err != nil {
42 return "", err
43 }
44
45 return repo.StoreData(data)
46}