summaryrefslogtreecommitdiff
path: root/community-garden/edit.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2022-12-15 20:24:49 -0500
committerDavid Thompson <dthompson2@worcester.edu>2023-01-06 16:00:25 -0500
commit19ecc6ff969ca632f21cc3943ed82e00a22c6419 (patch)
tree3b4353b99c03e2ad2a60449ad41262d4b6d987b9 /community-garden/edit.scm
parent291d593a0519d00545dac90ab832c88cfbfde7a3 (diff)
Add audit logging.
Diffstat (limited to 'community-garden/edit.scm')
-rw-r--r--community-garden/edit.scm40
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)))))