...
 
Commits (4)
......@@ -480,7 +480,6 @@
"github.com/go-chi/chi/middleware",
"github.com/go-chi/cors",
"github.com/go-errors/errors",
"github.com/hashicorp/go-cleanhttp",
"github.com/hashicorp/go-retryablehttp",
"github.com/jasonlvhit/gocron",
"github.com/mdp/qrterminal",
......
......@@ -46,8 +46,11 @@ var clientUpdates = []func(client *Client) error{
func(client *Client) error {
var logs []*LogEntry
var err error
// If loading logs fails, the logs file is likely empty and then there are no log entries to update
// Therefore throw away the error and mark the update as successful.
if err = client.storage.load(&logs, logsFile); err != nil {
return err
return nil
}
// Open one bolt transaction to process all our log entries in
err = client.storage.db.Update(func(tx *bbolt.Tx) error {
......
......@@ -1436,12 +1436,15 @@ func (conf *Configuration) validateTranslations(file string, o interface{}) {
}
for i := 0; i < v.NumField(); i++ {
if v.Field(i).Type() == reflect.TypeOf(TranslatedString{}) {
val := v.Field(i).Interface().(TranslatedString)
for _, lang := range langs {
if _, exists := val[lang]; !exists {
conf.Warnings = append(conf.Warnings, fmt.Sprintf("%s misses %s translation in <%s> tag", file, lang, v.Type().Field(i).Name))
}
field := v.Field(i)
name := v.Type().Field(i).Name
if field.Type() != reflect.TypeOf(TranslatedString{}) || name == "IssueURL" {
continue
}
val := field.Interface().(TranslatedString)
for _, lang := range langs {
if _, exists := val[lang]; !exists {
conf.Warnings = append(conf.Warnings, fmt.Sprintf("%s misses %s translation in <%s> tag", file, lang, name))
}
}
}
......
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAx3afG0L1zuU/sNRym8uAhI90u3KsHuwsAuuunzipN5AIaUjt
w7AltEf+AdGD0ybjak1g/dXz5BirOYmd7l2RifgoF42cxWnV0Ft6AL2D52LMbFwH
ElYs+mSfJszuMi+XNB2qJtUMrKxzSBlvVXGpU0ScAIG3bWQrughMsprpMwvuHIsZ
7aL/Jg+EK37nxWkl6afTfRhC4unK4vADq3qbX4hWPvoq6gmO7yz6130bAaB5ZFb7
F1Z6wD/n9qHOu70H9MB/HPE1XDblooxMrmr611GcW5GIDgM2ShD90ZQzE2QYiY4L
X4XYd+Su1sGAjgdTQtO7LCK+ze7YSwQMA2NMbQIDAQABAoIBAE4SjCxrhTM6YDei
sEly2hcI37QPKnfgEUoDXhJMZ0+sPN6ZARe7dsad9zpW+7ZGXnVZXEF+4TvCvCKF
Tx/h1/mc/HRbpaVPy7UGWTa490w2S7WOP+ZZfLl1cSYKyKE0J4bqpZMViSR9S5JJ
Al77Yj+Jd1Zrb5SNxN/IJ90w7V5g90dSy8D2uISkJpNUZkXJfsATzavRNvv3kYmC
PsZQAdMBkPBm4niwVn4wZX3HSLokrotqYv62nYWGJtKy7JXV0FhScoYLvX6vf3YB
u1xMuPsdRFQ6VJluJN3tu57xcAbS2wx0roItgG5p0UB7bo6rWjFp5OOLMYFy883g
IzhLvIECgYEA+apyb2MdCqTN/4gFjVZitRRkHuDQJUarpJ93v5hwW5b0LnNvHSc+
0zsH6kg7qogqr7bhqCA2pQbCTT2tiaGuBwDfi72IijcsRQflNf3/eaEoRMtpSOwc
3Jphnw0lIc1FWS/D1V8sGEUhZxnASCyPwonAZ/5qcsLy7PrCvZXmqyUCgYEAzIYd
bP0Q266EbhbuBS9bV8nIQj8fQCsWS53tn+wXYZCUHbdEIQvGjMYUV4ODAEm+MaAd
t8oeoowQ8Q8AfgTCBK8H190XR0iE/1ER+lORVcgK7ew5PmqQlOKis08PypMsvYV2
wDZH68AsT2txj8g9PDT7oUkafLKZWM2Fb+AavakCgYBMRFk41ZolijqzeKXZiy4U
Cuqa1CpBeNkuLNiz2qlYEUD+f5zN1xNGC55bXz161qXTj5ZXeZ+3wdzRI6pDhPRY
h1fCpF91eW04mTTXzYOhcC2Q9mJvOFGIwlBX+fgB32bz27eDEtOxhkyx5hfq9FHm
J5ZzLjDuZcc3xVJ//667UQKBgQC3175Pn9MthVvpEZd29bCn4uuuEMtohNKPujBF
VpVVz/40D+6fvdQF6m+SktaIxcC/HuxXrsmG11zLMu8AWAqG50anlUc9fkR+tELy
v3eeoiig4Xw7TNMV4fraLzFEqLLI0VWDRce0dJPf9/amhhn1KrMdsXarrGcHWgae
H9YpsQKBgQC0nbIuT2vcI268JAVZ6vBoCiHMNVlXZMi5n4KxjQaoXX2IuAtvstXD
7BpTWazmP3HmRTNsTUWfyFWQ477I3DtgCOY3BVP8vZ4RbwHA8fqJ3BvfasWhzjs+
KaF7k7n+mTKfeYkPbnj16w/+3q7s0L1IBZ2W6XsvpgYh+nkJGSEYHg==
-----END RSA PRIVATE KEY-----