You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cointop/cmd/commands/holdings.go

73 lines
2.3 KiB
Go

package cmd
import (
"fmt"
"github.com/miguelmota/cointop/cointop"
"github.com/spf13/cobra"
)
// HoldingsCmd ...
func HoldingsCmd() *cobra.Command {
var help bool
var total bool
var noCache bool
var config string
var sortBy string
var sortDesc bool
var format string = "table"
var humanReadable bool
var filter []string
var convert string
holdingsCmd := &cobra.Command{
Use: "holdings",
Short: "Displays current holdings",
Long: `The holdings command shows your current holdings`,
RunE: func(cmd *cobra.Command, args []string) error {
if help {
return cmd.Help()
}
ct, err := cointop.NewCointop(&cointop.Config{
ConfigFilepath: config,
CacheDir: cointop.DefaultCacheDir,
})
if err != nil {
return err
}
if total {
return ct.PrintTotalHoldings(&cointop.TablePrintOptions{
HumanReadable: humanReadable,
Format: format,
Filter: filter,
Convert: convert,
})
}
return ct.PrintHoldingsTable(&cointop.TablePrintOptions{
SortBy: sortBy,
SortDesc: sortDesc,
HumanReadable: humanReadable,
Format: format,
Filter: filter,
Convert: convert,
})
},
}
holdingsCmd.Flags().BoolVarP(&help, "help", "", help, "Help for holdings")
holdingsCmd.Flags().BoolVarP(&total, "total", "t", total, "Show total only")
holdingsCmd.Flags().BoolVarP(&noCache, "no-cache", "", noCache, "No cache")
holdingsCmd.Flags().BoolVarP(&humanReadable, "human", "h", humanReadable, "Human readable output")
holdingsCmd.Flags().StringVarP(&config, "config", "c", "", fmt.Sprintf("Config filepath. (default %s)", cointop.DefaultConfigFilepath))
holdingsCmd.Flags().StringVarP(&sortBy, "sort-by", "s", sortBy, `Sort by column. Options are "name", "symbol", "price", "holdings", "balance", "24h"`)
holdingsCmd.Flags().BoolVarP(&sortDesc, "sort-desc", "d", sortDesc, "Sort in descending order")
holdingsCmd.Flags().StringVarP(&format, "format", "", format, `Ouput format. Options are "table", "csv", "json"`)
holdingsCmd.Flags().StringSliceVarP(&filter, "filter", "", filter, `Filter portfolio entries by coin name or symbol, comma separated. Example: "btc,eth,doge"`)
holdingsCmd.Flags().StringVarP(&convert, "convert", "f", convert, "The currency to convert to")
return holdingsCmd
}