83706b40a5eba035478b5525cd91514ce4c082e9
[microbotany.git] / view.scm
1 ;; View a garden
2 ;;
3
4 (lambda (uri)
5   (import
6     (chicken condition)
7     (chicken file)
8     uri-common)
9   (for-each eval (with-input-from-file "garden.scm" read-list))
10   (serve-document-header (ext->mime "gmi"))
11   (let ((query (uri-query uri)))
12     (if (null? query)
13         (begin
14           (print "=> register.scm Please register first."))
15         (let ((hash (symbol->string (caar query))))
16           (condition-case
17               (let* ((g (with-input-from-file (make-pathname "accounts" hash) read))
18                      (user (garden-prop 'user g))
19                      (visits (+ 1 (garden-prop 'visits g))))
20                 (garden-prop-set! 'visits visits g)
21
22                 (print "# " user "'s garden\n")
23                 (if (> visits 1)
24                     (begin
25                       (print "Welcome back, " user "!\n")
26                       (print "You have visited your garden " visits " times.\n"))
27                     (begin
28                       (print "Welcome to your new garden, " user "!\n"
29                              "\nTo visit and chieck on your garden, you'll need to use this link:\n"
30                              (uri->string uri) "\n"
31                              "Remember to bookmark it to keep it safe!\n")))
32
33                 (update-garden! g)
34                 (with-output-to-file (make-pathname "accounts" hash)
35                   (lambda ()
36                     (write g)))
37
38                 (print "```")
39                 (display-garden g)
40                 (print "```")
41                 (describe-garden g)
42
43                 (print "\nWater level:")
44                 (print "```")
45                 (display-water-level g)
46                 (print "```")
47                 (print "\n=> water.scm?" hash " Water plant\n")
48
49                 (when (= (garden-prop 'stage-idx g) 5)
50                     (print "=> plant-new.scm?" hash " Plant a new seed\n"))
51
52                 (print "=> delete-confirm.scm?" hash " Delete garden (irreversible!)"))
53             (o (exn)
54                (print "This garden no longer exists.\n\n"
55                       "=> register.scm Register to create another.")))))))
56