4
4
"os"
5
5
"fmt"
6
6
"path"
7
+ "errors"
8
+ "strings"
7
9
"io/ioutil"
8
10
9
11
"github.com/jmalloc/grit/src/grit/pathutil"
@@ -24,20 +26,60 @@ func Path() string {
24
26
return path .Join (home , ".git-ledger" )
25
27
}
26
28
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
27
68
func (r Record ) String () string {
28
69
return fmt .Sprintf ("[[Record]]\n path = \" %s\" \n slug = \" %s\" \n \n " , r .Path , r .Slug )
29
70
}
30
71
31
- func (r Record ) RemoveFromLedger () {
72
+ // comparison by Path
73
+ func (r Record ) RemoveFromLedger () error {
32
74
b , err := ioutil .ReadFile (Path ())
33
75
if err != nil {
34
- fmt . Println ( err )
76
+ return err
35
77
}
36
78
str := string (b )
37
79
38
80
var ledger Records
39
81
if _ , err := toml .Decode (str , & ledger ); err != nil {
40
- panic ( err )
82
+ return err
41
83
}
42
84
43
85
var content string
@@ -48,10 +90,10 @@ func (r Record) RemoveFromLedger() {
48
90
}
49
91
50
92
ioutil .WriteFile (Path (), []byte (content ), 0644 )
51
-
93
+ return nil
52
94
}
53
95
54
- func (r Record ) WriteToLedger () {
96
+ func (r Record ) AddToLedger () {
55
97
f , err := os .OpenFile (Path (), os .O_APPEND | os .O_WRONLY | os .O_CREATE , 0644 )
56
98
if err != nil {
57
99
panic (err )
0 commit comments