person.go

 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}