grim/youtrack-import

Wow is it helpful when we spit out the issue number that failed to import
package trac
import (
"encoding/json"
"io/ioutil"
"strings"
"keep.imfreedom.org/grim/youtrack-import/youtrack"
)
type sessionAttribute struct {
Sid string `db:"sid"`
Authenticated bool `db:"authenticated"`
Name string `db:"name"`
Value string `db:"value"`
}
type importUsers struct {
Users map[string]importUser `json:"users"`
}
type importUser struct {
Login string `json:"login"`
FullName string `json:"fullname"`
Email string `json:"email"`
}
func loadImportUsers(importUsersFile string) (*importUsers, error) {
data, err := ioutil.ReadFile(importUsersFile)
if err != nil {
return nil, err
}
importUsers := &importUsers{}
err = json.Unmarshal(data, importUsers)
return importUsers, err
}
func (e *environment) loadUsers(importUsersFile string) (map[string]*youtrack.User, error) {
var err error
importUsers, err := loadImportUsers(importUsersFile)
if err != nil {
return nil, err
}
users := map[string]*youtrack.User{}
for tracId, user := range importUsers.Users {
users[tracId] = &youtrack.User{
Login: strings.TrimSpace(user.Login),
FullName: strings.TrimSpace(user.FullName),
Email: strings.TrimSpace(user.Email),
}
}
return users, nil
}
func mapUser(user, unknownUser string, users map[string]*youtrack.User) string {
if user == "" {
return user
}
if ytUser, found := users[user]; found {
return ytUser.Login
}
return unknownUser
}