mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-19 16:01:16 +00:00
76 lines
2.0 KiB
Go
76 lines
2.0 KiB
Go
package seed
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
// Result describes everything the seed produced that a human running the
|
|
// command will want to know: credentials, the API key secret (only available
|
|
// once), and which IDs were created so they can be referenced from manual
|
|
// testing.
|
|
type Result struct {
|
|
Password string
|
|
|
|
Users []SeededUser
|
|
Organizations []SeededOrg
|
|
Workers []SeededWorker
|
|
APIKeySecret string
|
|
APIKeyPrefix string
|
|
}
|
|
|
|
type SeededUser struct {
|
|
Role string
|
|
Email string
|
|
ID string
|
|
}
|
|
|
|
type SeededOrg struct {
|
|
Name string
|
|
Slug string
|
|
ID string
|
|
Plan string
|
|
Mailboxes int
|
|
Campaigns int
|
|
}
|
|
|
|
type SeededWorker struct {
|
|
Name string
|
|
Tier string
|
|
Type string
|
|
ID string
|
|
}
|
|
|
|
func (r *Result) Print(w io.Writer) {
|
|
b := &strings.Builder{}
|
|
b.WriteString("\n")
|
|
b.WriteString("======================================================================\n")
|
|
b.WriteString(" Warmbly dev seed complete\n")
|
|
b.WriteString("======================================================================\n\n")
|
|
fmt.Fprintf(b, "Password for every user: %s\n\n", r.Password)
|
|
|
|
b.WriteString("Users\n-----\n")
|
|
for _, u := range r.Users {
|
|
fmt.Fprintf(b, " %-14s %-30s (%s)\n", u.Role, u.Email, u.ID)
|
|
}
|
|
b.WriteString("\nOrganisations\n-------------\n")
|
|
for _, o := range r.Organizations {
|
|
fmt.Fprintf(b, " %-12s slug=%s plan=%s mailboxes=%d campaigns=%d\n",
|
|
o.Name, o.Slug, o.Plan, o.Mailboxes, o.Campaigns)
|
|
}
|
|
b.WriteString("\nWorkers\n-------\n")
|
|
for _, w := range r.Workers {
|
|
fmt.Fprintf(b, " %-22s tier=%-7s type=%-9s (%s)\n", w.Name, w.Tier, w.Type, w.ID)
|
|
}
|
|
|
|
if r.APIKeySecret != "" {
|
|
b.WriteString("\nAPI key (Acme owner, full access)\n---------------------------------\n")
|
|
fmt.Fprintf(b, " Prefix: %s\n Secret: %s\n (Stored as SHA-256 hash; secret is shown ONCE per seed run.)\n",
|
|
r.APIKeyPrefix, r.APIKeySecret)
|
|
}
|
|
|
|
b.WriteString("\n======================================================================\n")
|
|
io.WriteString(w, b.String())
|
|
}
|