-
Notifications
You must be signed in to change notification settings - Fork 42
/
printBalance.go
61 lines (54 loc) · 2.17 KB
/
printBalance.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package cmd
import (
"fmt"
"log"
"strings"
"time"
"github.com/howeyc/ledger"
"github.com/spf13/cobra"
)
// balanceCmd represents the balance command
var balanceCmd = &cobra.Command{
Aliases: []string{"bal"},
Use: "balance [account-substring-filter]...",
Short: "Print account balances",
Run: func(cmd *cobra.Command, args []string) {
generalLedger, err := cliTransactions()
if err != nil {
log.Fatalln(err)
}
if period == "" {
PrintBalances(ledger.GetBalances(generalLedger, args), showEmptyAccounts, transactionDepth, columnWidth)
} else {
lperiod := ledger.Period(period)
rtrans := ledger.TransactionsByPeriod(generalLedger, lperiod)
for rIdx, rt := range rtrans {
balances := ledger.GetBalances(rt.Transactions, args)
if len(balances) < 1 {
continue
}
if rIdx > 0 {
fmt.Println("")
fmt.Println(strings.Repeat("=", columnWidth))
}
fmt.Println(rt.Start.Format(transactionDateFormat), "-", rt.End.Format(transactionDateFormat))
fmt.Println(strings.Repeat("=", columnWidth))
PrintBalances(balances, showEmptyAccounts, transactionDepth, columnWidth)
}
}
},
}
func init() {
rootCmd.AddCommand(balanceCmd)
var startDate, endDate time.Time
startDate = time.Date(1970, 1, 1, 0, 0, 0, 0, time.Local)
endDate = time.Now()
balanceCmd.Flags().StringVarP(&startString, "begin-date", "b", startDate.Format(transactionDateFormat), "Begin date of transaction processing.")
balanceCmd.Flags().StringVarP(&endString, "end-date", "e", endDate.Format(transactionDateFormat), "End date of transaction processing.")
balanceCmd.Flags().StringVar(&payeeFilter, "payee", "", "Filter output to payees that contain this string.")
balanceCmd.Flags().IntVar(&columnWidth, "columns", 80, "Set a column width for output.")
balanceCmd.Flags().BoolVar(&columnWide, "wide", false, "Wide output (same as --columns=132).")
balanceCmd.Flags().StringVar(&period, "period", "", "Split output into periods (Monthly,Quarterly,SemiYearly,Yearly).")
balanceCmd.Flags().BoolVar(&showEmptyAccounts, "empty", false, "Show empty (zero balance) accounts.")
balanceCmd.Flags().IntVar(&transactionDepth, "depth", -1, "Depth of transaction output (balance).")
}