// Copyright © 2017 Mikael Berthe <mikael@lilotux.net>
//
// Licensed under the MIT license.
// Please see the LICENSE file is this directory.
package cmd
import (
"errors"
"github.com/spf13/cobra"
)
var notificationsOpts struct {
list, clear bool
notifID int
}
// notificationsCmd represents the notifications subcommand
var notificationsCmd = &cobra.Command{
Use: "notifications", // XXX
Aliases: []string{"notification", "notif"},
Short: "Manage notifications",
Example: ` madonctl accounts notifications --list
madonctl accounts notifications --list --clear
madonctl accounts notifications --notification-id N`,
//Long: `TBW...`,
RunE: notificationRunE,
}
func init() {
accountsCmd.AddCommand(notificationsCmd)
notificationsCmd.Flags().BoolVar(¬ificationsOpts.list, "list", false, "List all current notifications")
notificationsCmd.Flags().BoolVar(¬ificationsOpts.clear, "clear", false, "Clear all current notifications")
notificationsCmd.Flags().IntVar(¬ificationsOpts.notifID, "notification-id", 0, "Get a notification")
}
func notificationRunE(cmd *cobra.Command, args []string) error {
opt := notificationsOpts
if !opt.list && !opt.clear && opt.notifID < 1 {
return errors.New("missing parameters")
}
if err := madonInit(true); err != nil {
return err
}
var obj interface{}
var err error
if opt.list {
obj, err = gClient.GetNotifications()
} else if opt.notifID > 0 {
obj, err = gClient.GetNotification(opt.notifID)
}
if err == nil && opt.clear {
err = gClient.ClearNotifications()
}
if err != nil {
errPrint("Error: %s", err.Error())
return nil
}
if obj == nil {
return nil
}
p, err := getPrinter()
if err != nil {
return err
}
return p.PrintObj(obj, nil, "")
}