invitea/flag.go

49 lines
1.2 KiB
Go

package main
import (
"flag"
"fmt"
"sort"
"github.com/gorilla/securecookie"
)
var (
fs = flag.NewFlagSet("invitea", flag.ExitOnError)
// Optional
jsonLog = fs.Bool("json", false, "Enable JSON logging")
port = fs.Int("port", 8080, "Port to run on")
sessionSecret = fs.String("session-secret", string(securecookie.GenerateRandomKey(32)), "Session secret")
// Required
domain = fs.String("domain", "", "Domain Invitea is running on")
giteaURL = fs.String("gitea.url", "", "Gitea URL")
giteaClientKey = fs.String("gitea.client-key", "", "Gitea OAuth2 Client Key")
giteaClientSecret = fs.String("gitea.client-secret", "", "Gitea OAuth2 Client Secret")
giteaToken = fs.String("gitea.token", "", "Gitea admin token")
)
func requiredFlags() error {
required := map[string]*string{
"domain": domain,
"gitea.url": giteaURL,
"gitea.client-key": giteaClientKey,
"gitea.client-secret": giteaClientSecret,
"gitea.token": giteaToken,
}
var unset []string
for k, v := range required {
if *v == "" {
unset = append(unset, k)
}
}
if len(unset) > 0 {
sort.Strings(unset)
return fmt.Errorf("the following flags were unset, but are required: %v", unset)
}
return nil
}