github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/cli/tools/org_preferences.go (about) 1 package tools 2 3 import ( 4 "context" 5 "github.com/bep/simplecobra" 6 "github.com/esnet/gdg/cli/support" 7 "github.com/jedib0t/go-pretty/v6/table" 8 "github.com/spf13/cobra" 9 "log" 10 "log/slog" 11 ) 12 13 func newOrgPreferenceCommand() simplecobra.Commander { 14 return &support.SimpleCommand{ 15 NameP: "preferences", 16 Short: "Update organization preferences", 17 Long: "Update organization preferences", 18 RunFunc: func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *support.RootCommand, args []string) error { 19 return cd.CobraCommand.Help() 20 21 }, 22 WithCFunc: func(cmd *cobra.Command, r *support.RootCommand) { 23 cmd.Aliases = []string{"preference", "pref", "p", "prefs"} 24 }, 25 CommandsList: []simplecobra.Commander{ 26 //Preferences 27 newGetOrgPreferenceCmd(), 28 newUpdateOrgPreferenceCmd(), 29 }, 30 } 31 32 } 33 34 func newUpdateOrgPreferenceCmd() simplecobra.Commander { 35 return &support.SimpleCommand{ 36 NameP: "set", 37 Short: "Set --orgName [--homeDashUid, --theme, --weekstart] to set Org preferences", 38 Long: "Set --orgName [--homeDashUid, --theme, --weekstart] to set Org preferences", 39 WithCFunc: func(cmd *cobra.Command, r *support.RootCommand) { 40 cmd.PersistentFlags().StringP("orgName", "", "", "Organization Name") 41 cmd.PersistentFlags().StringP("homeDashUid", "", "", "UID for the home dashboard") 42 cmd.PersistentFlags().StringP("theme", "", "", "light, dark") 43 cmd.PersistentFlags().StringP("weekstart", "", "", "day of the week (sunday, monday, etc)") 44 45 }, 46 RunFunc: func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *support.RootCommand, args []string) error { 47 slog.Info("update the org preferences") 48 org, _ := cd.CobraCommand.Flags().GetString("orgName") 49 home, _ := cd.CobraCommand.Flags().GetString("homeDashUid") 50 theme, _ := cd.CobraCommand.Flags().GetString("theme") 51 weekstart, _ := cd.CobraCommand.Flags().GetString("weekstart") 52 if org == "" { 53 log.Fatal("--orgName is a required parameter") 54 } 55 if home != "" && theme != "" && weekstart == "" { 56 log.Fatal("At least one of [--homeDashUid, --theme, --weekstart] needs to be set") 57 } 58 59 rootCmd.GrafanaSvc().InitOrganizations() 60 prefere, err := rootCmd.GrafanaSvc().GetOrgPreferences(org) 61 if err != nil { 62 log.Fatal(err.Error()) 63 } 64 if home != "" { 65 prefere.HomeDashboardUID = home 66 } 67 if theme != "" { 68 prefere.Theme = theme 69 } 70 if weekstart != "" { 71 prefere.WeekStart = weekstart 72 } 73 74 err = rootCmd.GrafanaSvc().UploadOrgPreferences(org, prefere) 75 if err != nil { 76 log.Fatalf("Failed to update org preferences, %v", err) 77 } 78 slog.Info("Preferences update for organization", slog.Any("organization", org)) 79 80 return nil 81 82 }, 83 } 84 85 } 86 87 func newGetOrgPreferenceCmd() simplecobra.Commander { 88 return &support.SimpleCommand{ 89 NameP: "get", 90 Short: "get <orgName> returns org preferences", 91 Long: "get <orgId> returns org preferences", 92 WithCFunc: func(cmd *cobra.Command, r *support.RootCommand) { 93 cmd.PersistentFlags().StringP("orgName", "", "", "Organization Name") 94 }, 95 RunFunc: func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *support.RootCommand, args []string) error { 96 orgName, _ := cd.CobraCommand.Flags().GetString("orgName") 97 98 rootCmd.GrafanaSvc().InitOrganizations() 99 pref, err := rootCmd.GrafanaSvc().GetOrgPreferences(orgName) 100 if err != nil { 101 log.Fatal(err.Error()) 102 } 103 104 rootCmd.TableObj.AppendHeader(table.Row{"field", "value"}) 105 rootCmd.TableObj.AppendRow(table.Row{"HomeDashboardUID", pref.HomeDashboardUID}) 106 rootCmd.TableObj.AppendRow(table.Row{"Theme", pref.Theme}) 107 rootCmd.TableObj.AppendRow(table.Row{"WeekStart", pref.WeekStart}) 108 109 rootCmd.Render(cd.CobraCommand, pref) 110 111 return nil 112 113 }, 114 } 115 116 }