grim/youtrack-import
Clone
Summary
Browse
Changes
Graph
Split the version field into AffectedVersion and FixVersion while having trac and bitbucket use AffectedVersion. Also put the trac milestone into the Fix Version.
draft
2020-08-11, Gary Kramlich
faf8f5a4120f
Split the version field into AffectedVersion and FixVersion while having trac and bitbucket use AffectedVersion. Also put the trac milestone into the Fix Version.
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
}