diff options
author | David Thompson <dthompson2@worcester.edu> | 2022-12-15 20:24:49 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2023-01-06 16:00:25 -0500 |
commit | 19ecc6ff969ca632f21cc3943ed82e00a22c6419 (patch) | |
tree | 3b4353b99c03e2ad2a60449ad41262d4b6d987b9 /community-garden/edit.scm | |
parent | 291d593a0519d00545dac90ab832c88cfbfde7a3 (diff) |
Add audit logging.
Diffstat (limited to 'community-garden/edit.scm')
-rw-r--r-- | community-garden/edit.scm | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/community-garden/edit.scm b/community-garden/edit.scm index 3da54ba..01addd6 100644 --- a/community-garden/edit.scm +++ b/community-garden/edit.scm @@ -8,16 +8,24 @@ #:use-module (ice-9 match) #:export (edit-garden)) -(define (edit-garden name garden-address) - (define garden-sref (string->ocapn-id garden-address)) +(define (edit-garden name community-address) + (define community-sref (string->ocapn-id community-address)) (define vat (spawn-vat)) (define-vat-run vat-run vat) (define onion-netlayer (vat-run (new-onion-netlayer))) (define mycapn (vat-run (spawn-mycapn onion-netlayer))) - (define garden-vow (vat-run ($ mycapn 'enliven garden-sref))) - (define approved-plants-vow (vat-run (<- garden-vow 'get-approved-plants))) - (define gardener (vat-run (spawn ^gardener name garden-vow))) + (define community-vow (vat-run ($ mycapn 'enliven community-sref))) + (define gardener (vat-run (<- community-vow 'register-gardener name))) + (define approved-plants-vow (vat-run (<- gardener 'get-approved-plants))) (define running? #t) + (define (plant-ref plants name) + (let loop ((plants plants)) + (match plants + (() #f) + (((k v) . rest) + (if (string=? k name) + v + (loop rest)))))) (define (read*) (display "> ") (read)) @@ -26,18 +34,26 @@ (('quit) (set! running? #f)) (('get-garden-name) - (vat-run (on ($ gardener 'get-garden-name) + (vat-run (on (<- gardener 'get-garden-name) (lambda (name) - (format #t "~a\n" name))))) + (format #t "Garden name: ~a\n" + name))))) + (('list-plants) + (vat-run + (on approved-plants-vow + (lambda (plants) + (for-each (match-lambda + ((name _) + (format #t "~a\n" name))) + plants))))) (('dig-up x y) (format #t "dig up tile (~a, ~a)\n" x y) - (vat-run ($ gardener 'dig-up x y))) - (('plant x y) + (vat-run (<- gardener 'dig-up x y))) + (('plant x y name) (format #t "plant in tile (~a, ~a)\n" x y) (vat-run (on approved-plants-vow - (match-lambda - ((plant . _) - ($ gardener 'plant x y plant)))))) + (lambda (plants) + (<- gardener 'plant x y (plant-ref plants name)))))) (exp (format #t "unrecognized command: ~a\n" exp))))) |