diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b454bff --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +gopub diff --git a/commands/app.go b/commands/app.go new file mode 100644 index 0000000..8e13b5e --- /dev/null +++ b/commands/app.go @@ -0,0 +1,40 @@ +package commands + +import ( + "codeberg.org/danjones000/gopub/config" + "github.com/gofiber/fiber/v2" + "github.com/spf13/cobra" + "log" +) + +type passReq struct { + Pass string `json:"pass"` +} + +func app(cmd *cobra.Command, args []string) { + app := fiber.New() + conf := config.GetConfig() + + app.Get("/", func(c *fiber.Ctx) error { + return c.JSON(&conf) + }) + + app.Post("/check_pass", func(c *fiber.Ctx) error { + req := new(passReq) + if err := c.BodyParser(req); err != nil { + panic(err) + } + + return c.JSON(config.CheckPassword(req.Pass)) + }) + + log.Fatal(app.Listen(":3000")) +} + +var AppCmd = &cobra.Command{ + Use: "app", + Short: "Run the gopub webapp", + Long: `This is the main command. This will start the application, and keep it running. +You may want to run this from something like supervisor or systemd`, + Run: app, +} diff --git a/commands/root.go b/commands/root.go index 7c9c426..316c9e7 100644 --- a/commands/root.go +++ b/commands/root.go @@ -11,9 +11,10 @@ var rootCmd = &cobra.Command{ Use: "gopub", Short: "gopub is a single-user ActivityPub instance", Long: "...", - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Run a sub-command") - }, +} + +func init() { + rootCmd.AddCommand(AppCmd) } func Execute() { diff --git a/main.go b/main.go index fed16d4..4516183 100644 --- a/main.go +++ b/main.go @@ -1,37 +1,9 @@ package main import ( - "log" - "codeberg.org/danjones000/gopub/commands" - "codeberg.org/danjones000/gopub/config" - "github.com/gofiber/fiber/v2" ) func main() { commands.Execute() } - -type passReq struct { - Pass string `json:"pass"` -} - -func mainOld() { - app := fiber.New() - conf := config.GetConfig() - - app.Get("/", func(c *fiber.Ctx) error { - return c.JSON(&conf) - }) - - app.Post("/check_pass", func(c *fiber.Ctx) error { - req := new(passReq) - if err := c.BodyParser(req); err != nil { - panic(err) - } - - return c.JSON(config.CheckPassword(req.Pass)) - }) - - log.Fatal(app.Listen(":3000")) -}