51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"sort"
|
|
|
|
"github.com/gorilla/securecookie"
|
|
)
|
|
|
|
var (
|
|
fs = flag.NewFlagSet("invitea", flag.ExitOnError)
|
|
_ = fs.String("config", "invitea.yaml", "Invitea config")
|
|
|
|
// Optional
|
|
jsonLogFlag = fs.Bool("json", false, "Enable JSON logging")
|
|
portFlag = fs.Int("port", 8080, "Port to run on")
|
|
sessionSecretFlag = fs.String("session-secret", string(securecookie.GenerateRandomKey(32)), "Session secret")
|
|
dbFlag = fs.String("database", "invitea.db", "Path to database")
|
|
|
|
// Required
|
|
domainFlag = fs.String("domain", "", "Domain Invitea is running on")
|
|
giteaURLFlag = fs.String("gitea.url", "", "Gitea URL")
|
|
giteaClientKeyFlag = fs.String("gitea.client-key", "", "Gitea OAuth2 Client Key")
|
|
giteaClientSecretFlag = fs.String("gitea.client-secret", "", "Gitea OAuth2 Client Secret")
|
|
giteaTokenFlag = fs.String("gitea.token", "", "Gitea admin token")
|
|
)
|
|
|
|
func requiredFlags() error {
|
|
required := map[string]*string{
|
|
"domain": domainFlag,
|
|
"gitea.url": giteaURLFlag,
|
|
"gitea.client-key": giteaClientKeyFlag,
|
|
"gitea.client-secret": giteaClientSecretFlag,
|
|
"gitea.token": giteaTokenFlag,
|
|
}
|
|
|
|
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
|
|
}
|