@@ -2,12 +2,12 @@ package main
22
33import (
44 "context"
5- "fmt"
65 "os"
7- "strings"
86
97 "github.com/vito/bass/pkg/bass"
8+ "github.com/vito/bass/pkg/proto"
109 "github.com/vito/progrock"
10+ "google.golang.org/protobuf/encoding/prototext"
1111)
1212
1313func bump (ctx context.Context ) error {
@@ -17,63 +17,59 @@ func bump(ctx context.Context) error {
1717 return err
1818 }
1919
20- var lf bass. LockfileContent
21- err = bass . UnmarshalJSON (lockContent , & lf )
20+ content := & proto. Memosphere {}
21+ err = prototext . Unmarshal (lockContent , content )
2222 if err != nil {
2323 return err
2424 }
2525
26- for thunkFn , pairs := range lf .Data {
27- segs := strings .SplitN (thunkFn , ":" , 2 )
28- if len (segs ) != 2 {
29- return fmt .Errorf ("malformed bass.lock key: %q" , thunkFn )
30- }
31-
32- thunkID := segs [0 ]
33- fn := bass .Symbol (segs [1 ])
34- thunk := lf .Thunks [thunkID ]
35-
36- runtime , err := bass .RuntimeFromContext (ctx , nil )
26+ for _ , memo := range content .Memos {
27+ thunk := bass.Thunk {}
28+ err := thunk .UnmarshalProto (memo .Module )
3729 if err != nil {
3830 return err
3931 }
4032
41- scope , err := runtime .Load (ctx , thunk )
33+ scope , err := bass . Bass .Load (ctx , thunk )
4234 if err != nil {
4335 return err
4436 }
4537
46- var comb bass.Combiner
47- err = scope .GetDecode (fn , & comb )
48- if err != nil {
49- return err
50- }
38+ for _ , call := range memo .Calls {
39+ binding := bass .Symbol (call .Binding )
5140
52- for i , pair := range pairs {
53- res , err := bass . Trampoline ( ctx , comb . Call ( ctx , pair . Input . Value , bass . NewEmptyScope (), bass . Identity ) )
41+ var comb bass. Combiner
42+ err = scope . GetDecode ( binding , & comb )
5443 if err != nil {
5544 return err
5645 }
5746
58- // update reference inline
59- pairs [i ].Output .Value = res
60- }
61- }
47+ for _ , res := range call .Results {
48+ input , err := bass .FromProto (res .Input )
49+ if err != nil {
50+ return err
51+ }
6252
63- lockFile , err := os .Create (bumpLock )
64- if err != nil {
65- return err
66- }
53+ out , err := bass .Trampoline (ctx , comb .Call (ctx , input , bass .NewEmptyScope (), bass .Identity ))
54+ if err != nil {
55+ return err
56+ }
57+
58+ output , err := bass .MarshalProto (out )
59+ if err != nil {
60+ return err
61+ }
6762
68- defer lockFile .Close ()
63+ res .Output = output
64+ }
65+ }
66+ }
6967
70- enc := bass .NewEncoder (lockFile )
71- enc .SetIndent ("" , " " )
72- err = enc .Encode (lf )
68+ payload , err := prototext.MarshalOptions {Multiline : true }.Marshal (content )
7369 if err != nil {
7470 return err
7571 }
7672
77- return nil
73+ return os . WriteFile ( bumpLock , payload , 0644 )
7874 })
7975}
0 commit comments