grim/youtrack-import

c3d30cb6d4ea
Grab the distinct version and milestone fields from tickets as well
package bitbucket
import (
"encoding/json"
"fmt"
"io/ioutil"
"keep.imfreedom.org/grim/youtrack-import/youtrack"
)
type User struct {
FullName string `json:"fullName"`
Login string `json:"login"`
Email string `json:"email"`
}
func (u *User) ToYoutrack() *youtrack.User {
return youtrack.NewUser(u.Login, u.FullName, u.Email)
}
type UsersMapData struct {
Users []User `json:"users"`
}
type UsersMap struct {
users map[string]User
}
func NewUsersMap(filename string) (*UsersMap, error) {
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
d := UsersMapData{}
if err := json.Unmarshal(data, &d); err != nil {
return nil, err
}
m := &UsersMap{
users: map[string]User{},
}
for _, user := range d.Users {
m.users[user.FullName] = user
}
return m, nil
}
func (m *UsersMap) Find(displayName string) (User, error) {
if user, found := m.users[displayName]; found {
return user, nil
}
return User{}, fmt.Errorf("no user found for %q", displayName)
}