add --json flag to hyprman mako

This commit is contained in:
Daylin Morgan 2024-06-11 11:53:13 -05:00
parent b31326b529
commit 68c90481fc
Signed by: daylin
GPG key ID: 950D13E9719334AD
4 changed files with 26 additions and 13 deletions

View file

@ -1,24 +1,26 @@
package cmd package cmd
import ( import (
"git.dayl.in/daylin/hyprman/internal"
"github.com/spf13/cobra" "github.com/spf13/cobra"
hyprman "git.dayl.in/daylin/hyprman/internal"
) )
var makoCmd = &cobra.Command{ var makoCmd = &cobra.Command{
Use: "mako", Use: "mako",
Short: "mako integration", Short: "mako integration",
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
hyprman.ListNotifications(number) hyprman.ListNotifications(number, json)
}, },
} }
var ( var (
number int number int
json bool
) )
func init() { func init() {
rootCmd.AddCommand(makoCmd) rootCmd.AddCommand(makoCmd)
makoCmd.Flags().IntVarP(&number, "number", "n", 10, "number of notifications") makoCmd.Flags().IntVarP(&number, "number", "n", 10, "number of notifications")
makoCmd.Flags().BoolVar(&json, "json", false, "output data as json")
} }

View file

@ -3,9 +3,10 @@ package cmd
import ( import (
"os" "os"
"git.dayl.in/daylin/hyprman/internal"
cc "github.com/ivanpirog/coloredcobra" cc "github.com/ivanpirog/coloredcobra"
"github.com/spf13/cobra" "github.com/spf13/cobra"
hyprman "git.dayl.in/daylin/hyprman/internal"
) )
func Execute() { func Execute() {

View file

@ -69,14 +69,24 @@ func getHistory() History {
return makoHistory.toHistory() return makoHistory.toHistory()
} }
func ListNotifications(number int) { func (h *History) truncate(number int) {
history := getHistory() h.Notifications = h.Notifications[:min(len(h.Notifications), number)]
for i, n := range history.Notifications {
if i > number-1 {
break
} }
func ListNotifications(number int, outputJson bool) {
history := getHistory()
history.truncate(number)
if !outputJson {
for _, n := range history.Notifications {
n.Render() n.Render()
} }
} else {
b, err := json.MarshalIndent(history.Notifications, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(b))
}
} }
func (n Notifcation) Render() { func (n Notifcation) Render() {