summary history files

main.go
package main

import (
	"flag"
	"fmt"
	"ofxmerge/internal/merge"
	"os"

	"github.com/aclindsa/ofxgo"
	"github.com/aclindsa/xml"
)

type OfxBank struct {
	XMLName      xml.Name               `xml:"OFX"`
	Status       ofxgo.Status           `xml:"STATUS"`
	CurDef       ofxgo.CurrSymbol       `xml:"STMTRS>CURDEF"`
	BankTranList *ofxgo.TransactionList `xml:"STMTRS>BANKTRANLIST,omitempty"`
}

func NewOfxBank() *OfxBank {
	transactionList := ofxgo.TransactionList{
		Transactions: []ofxgo.Transaction{},
	}
	return &OfxBank{
		BankTranList: &transactionList,
	}
}

func main() {
	cmd := flag.NewFlagSet("ofxmerge", flag.ExitOnError)
	cmd.Parse(os.Args[1:])

	o := merge.NewOFXMerger()

	for _, filename := range cmd.Args() {
		b, err := os.ReadFile(filename)
		if err != nil {
			fmt.Fprintf(os.Stderr, "%s: %v\n", filename, err)
			os.Exit(1)
		}

		if err := o.Add(b); err != nil {
			fmt.Fprintf(os.Stderr, "%s: %v\n", filename, err)
			os.Exit(1)
		}
	}

	b, err := o.Merge()
	if err != nil {
		fmt.Fprintf(os.Stderr, "%v\n", err)
		os.Exit(1)
	}

	fmt.Fprintf(os.Stdout, "%s", b)
}