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 percentChange24H bool
var noCache bool
var noHeader bool
var config string
var sortBy string
var sortDesc bool
var format string = "table"
var humanReadable bool
var filter [ ] string
var cols [ ] string
var convert string
var hideBalances bool
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 || percentChange24H {
if percentChange24H {
return ct . PrintHoldings24HChange ( & cointop . TablePrintOptions {
HumanReadable : humanReadable ,
Format : format ,
Filter : filter ,
Convert : convert ,
} )
}
if total {
return ct . PrintHoldingsTotal ( & 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 ,
Cols : cols ,
Convert : convert ,
NoHeader : noHeader ,
HideBalances : hideBalances ,
} )
} ,
}
holdingsCmd . Flags ( ) . BoolVarP ( & help , "help" , "" , help , "Help for holdings" )
holdingsCmd . Flags ( ) . BoolVarP ( & total , "total" , "t" , total , "Show portfolio total only" )
holdingsCmd . Flags ( ) . BoolVarP ( & percentChange24H , "24h" , "" , percentChange24H , "Show portfolio 24H change only" )
holdingsCmd . Flags ( ) . BoolVarP ( & noCache , "no-cache" , "" , noCache , "No cache" )
holdingsCmd . Flags ( ) . BoolVarP ( & humanReadable , "human" , "h" , humanReadable , "Human readable output" )
holdingsCmd . Flags ( ) . BoolVarP ( & noHeader , "no-header" , "" , noHeader , "Don't display header columns" )
holdingsCmd . Flags ( ) . BoolVarP ( & hideBalances , "hide-balances" , "" , hideBalances , "Hide portfolio balances. Useful for when sharing screen or taking screenshotss" )
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 without spaces. Example: "btc,eth,doge" ` )
holdingsCmd . Flags ( ) . StringSliceVarP ( & cols , "cols" , "" , cols , ` Filter portfolio columns, comma separated without spaces. Example: "symbol,holdings,balance" ` )
holdingsCmd . Flags ( ) . StringVarP ( & convert , "convert" , "f" , convert , "The currency to convert to" )
return holdingsCmd
}