From 0bfce9c16fc55c3a3fec23acebef32ea7e638125 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Wed, 29 Mar 2023 16:16:21 -0400 Subject: [PATCH] feat(cmd): add settings server command --- server/cmd/setting.go | 68 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 server/cmd/setting.go diff --git a/server/cmd/setting.go b/server/cmd/setting.go new file mode 100644 index 0000000000000000000000000000000000000000..8faea89c5c2d7a001b5c59d28791f226c66bcab6 --- /dev/null +++ b/server/cmd/setting.go @@ -0,0 +1,68 @@ +package cmd + +import ( + "fmt" + "strconv" + + "github.com/charmbracelet/soft-serve/server/backend" + "github.com/spf13/cobra" +) + +func settingCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "setting", + Short: "Manage settings", + } + + cmd.AddCommand( + &cobra.Command{ + Use: "allow-keyless [true|false]", + Short: "Set or get allow keyless access to repositories", + Args: cobra.RangeArgs(0, 1), + PersistentPreRunE: checkIfAdmin, + RunE: func(cmd *cobra.Command, args []string) error { + cfg, _ := fromContext(cmd) + switch len(args) { + case 0: + cmd.Println(cfg.Backend.AllowKeyless()) + case 1: + v, _ := strconv.ParseBool(args[0]) + if err := cfg.Backend.SetAllowKeyless(v); err != nil { + return err + } + } + + return nil + }, + }, + ) + + cmd.AddCommand( + &cobra.Command{ + Use: "anon-access [ACCESS_LEVEL]", + Short: "Set or get the default access level for anonymous users", + Args: cobra.RangeArgs(0, 1), + ValidArgs: []string{backend.NoAccess.String(), backend.ReadOnlyAccess.String(), backend.ReadWriteAccess.String(), backend.AdminAccess.String()}, + PersistentPreRunE: checkIfAdmin, + RunE: func(cmd *cobra.Command, args []string) error { + cfg, _ := fromContext(cmd) + switch len(args) { + case 0: + cmd.Println(cfg.Backend.AnonAccess()) + case 1: + al := backend.ParseAccessLevel(args[0]) + if al < 0 { + return fmt.Errorf("invalid access level: %s", args[0]) + } + if err := cfg.Backend.SetAnonAccess(al); err != nil { + return err + } + } + + return nil + }, + }, + ) + + return cmd +}