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 }