package cmd

import (
  "fmt"
  "os"

  "github.com/spf13/cobra"
  "github.com/sstallion/go-hid"

  "git.metaunix.net/metaunix/fantastic/devices"
)

var rootCmd = &cobra.Command{
  Use:   "fantastic",
  Short: "Fantastic is a CLI app to manage ",
  Long: `A fast and lightweight CLI tool to manage your Glorious peripherals.`,
  Run: func(cmd *cobra.Command, args []string) {
    count := 0

    hid.Enumerate(0, 0, func(info *hid.DeviceInfo) error {
      if info.VendorID == devices.VID {
        count += 1
      }

  		fmt.Printf("%s: ID %04x:%04x %s %s\n",
			     info.Path, info.VendorID, info.ProductID, info.MfrStr, info.ProductStr)
			fmt.Println("Device Information:")
			fmt.Printf("\tPath         %s\n", info.Path)
			fmt.Printf("\tVendorID     %#04x\n", info.VendorID)
			fmt.Printf("\tProductID    %#04x\n", info.ProductID)
			fmt.Printf("\tUsagePage    %#04x\n", info.UsagePage)
			fmt.Printf("\tUsage        %#04x\n", info.Usage)
			fmt.Printf("\tInterfaceNbr %d\n", info.InterfaceNbr)
			fmt.Printf("\tBusType      %s\n", info.BusType)
  		fmt.Println()
  		return nil
    })

    fmt.Printf("Found %d Glorious devices.\n", count)
  },
}

func Execute() {
  if err := rootCmd.Execute(); err != nil {
    fmt.Fprintln(os.Stderr, err)
    os.Exit(1)
  }
}
