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 }