44 "os"
55 "fmt"
66 "path"
7+ "errors"
8+ "strings"
79 "io/ioutil"
810
911 "github.com/jmalloc/grit/src/grit/pathutil"
@@ -24,20 +26,60 @@ func Path() string {
2426 return path .Join (home , ".git-ledger" )
2527}
2628
29+ func GetRecords () ([]Record , error ) {
30+ var ledger Records
31+
32+ b , err := ioutil .ReadFile (Path ())
33+ if err != nil {
34+ return ledger .Record , err
35+ }
36+ str := string (b )
37+
38+ if _ , err := toml .Decode (str , & ledger ); err != nil {
39+ return ledger .Record , err
40+ }
41+ return ledger .Record , err
42+ }
43+
44+ func GetBySlug (slug string ) (Record , error ) {
45+ var match Record
46+ var ledger Records
47+
48+ // TODO: use getrecords
49+ b , err := ioutil .ReadFile (Path ())
50+ if err != nil {
51+ return match , err
52+ }
53+ str := string (b )
54+
55+ if _ , err := toml .Decode (str , & ledger ); err != nil {
56+ return match , err
57+ }
58+
59+ for _ , r := range ledger .Record {
60+ if strings .Contains (r .Slug , slug ) {
61+ return r , nil
62+ }
63+ }
64+ return match , errors .New (fmt .Sprintf ("Unknown project: %s" , slug ))
65+ }
66+
67+ // fixme: remove duplicated code
2768func (r Record ) String () string {
2869 return fmt .Sprintf ("[[Record]]\n path = \" %s\" \n slug = \" %s\" \n \n " , r .Path , r .Slug )
2970}
3071
31- func (r Record ) RemoveFromLedger () {
72+ // comparison by Path
73+ func (r Record ) RemoveFromLedger () error {
3274 b , err := ioutil .ReadFile (Path ())
3375 if err != nil {
34- fmt . Println ( err )
76+ return err
3577 }
3678 str := string (b )
3779
3880 var ledger Records
3981 if _ , err := toml .Decode (str , & ledger ); err != nil {
40- panic ( err )
82+ return err
4183 }
4284
4385 var content string
@@ -48,10 +90,10 @@ func (r Record) RemoveFromLedger() {
4890 }
4991
5092 ioutil .WriteFile (Path (), []byte (content ), 0644 )
51-
93+ return nil
5294}
5395
54- func (r Record ) WriteToLedger () {
96+ func (r Record ) AddToLedger () {
5597 f , err := os .OpenFile (Path (), os .O_APPEND | os .O_WRONLY | os .O_CREATE , 0644 )
5698 if err != nil {
5799 panic (err )
0 commit comments