summaryrefslogtreecommitdiff
path: root/cmd/redqctl
diff options
context:
space:
mode:
authorsinanmohd <sinan@sinanmohd.com>2024-03-13 06:47:19 +0530
committersinanmohd <sinan@sinanmohd.com>2024-03-15 22:20:15 +0530
commit3dd390c0cb56ffb5a7c1f94afaed0b80ad12cbe1 (patch)
treed14983bb19b66f3a8c69e8d9ca8dbea296a80df0 /cmd/redqctl
repo: init
Diffstat (limited to 'cmd/redqctl')
-rw-r--r--cmd/redqctl/main.go74
1 files changed, 74 insertions, 0 deletions
diff --git a/cmd/redqctl/main.go b/cmd/redqctl/main.go
new file mode 100644
index 0000000..f6f9e9e
--- /dev/null
+++ b/cmd/redqctl/main.go
@@ -0,0 +1,74 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+ "log"
+ "os"
+
+ redqdb "sinanmohd.com/redq/db"
+)
+
+func help() {
+ const helpString string =
+`redqctl is a tool for managing redq.
+
+Usage:
+
+ redqctl <command> [arguments]
+
+The commands are:
+
+ create create a redq account
+ help show this help cruft
+
+`
+
+ fmt.Print(helpString)
+}
+
+func create(args []string, db *redqdb.SafeDB) {
+ f := flag.NewFlagSet("create", flag.ExitOnError)
+ ac := &redqdb.Account{}
+ ac.Info = &redqdb.Login{}
+
+ f.StringVar(&ac.Email, "email", "",
+ "The email to associate with the account")
+ f.StringVar(&ac.Info.FirstName, "fname", "",
+ "The first name to associate with the account")
+ f.StringVar(&ac.Info.LastName, "lname", "",
+ "The last name to associate with the account")
+ f.StringVar(&ac.PassHash, "pass", "",
+ "The password to associate with the account")
+ f.UintVar(&ac.Info.Level, "level", 0,
+ "The level to associate with the account")
+ f.Parse(args)
+
+ err := ac.CreateAccount(db)
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+func main() {
+ args := os.Args[1:]
+ if len(args) == 0 {
+ help()
+ os.Exit(2)
+ }
+
+ db, err := redqdb.NewSafeDB()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ switch args[0] {
+ case "help":
+ help()
+ case "create":
+ create(args[1:], db)
+ default:
+ help()
+ os.Exit(2)
+ }
+}