summaryrefslogtreecommitdiffstats
path: root/virtual-programs
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2023-11-21 18:02:43 +0000
committerOmar Rizwan <omar@omar.website>2023-11-21 18:08:01 +0000
commit0f21d318e395ab976f29c3ae18fe2139c22511bf (patch)
treec64dadf422ed65f2656d7bce8da864198f753b54 /virtual-programs
parentMerge pull request #114 from FolkComputer/nm/text-halign (diff)
downloadfolk-0f21d318e395ab976f29c3ae18fe2139c22511bf.tar.gz
folk-0f21d318e395ab976f29c3ae18fe2139c22511bf.zip
programs: Expose web printed-programs/; fault to folk0
Diffstat (limited to 'virtual-programs')
-rw-r--r--virtual-programs/programs.folk32
-rw-r--r--virtual-programs/web-printed-programs.folk9
2 files changed, 29 insertions, 12 deletions
diff --git a/virtual-programs/programs.folk b/virtual-programs/programs.folk
index f42e1360..7c98632b 100644
--- a/virtual-programs/programs.folk
+++ b/virtual-programs/programs.folk
@@ -5,18 +5,26 @@ When (non-capturing) /type/ /obj/ has a program {
On unmatch { puts "Removed $type $obj" }
try {
- set tempPath "$::env(HOME)/folk-printed-programs/$obj.folk.temp"
+ if {[file exists "$::env(HOME)/folk-printed-programs/$obj.folk.temp"]} {
+ set fd [open "$::env(HOME)/folk-printed-programs/$obj.folk.temp" r]
+ } else {
+ if {![file exists "$::env(HOME)/folk-printed-programs/$obj.folk"] &&
+ ($::thisNode eq "folk-beads" || $::thisNode eq "folk-convivial")} {
+ # HACK: 'Page fault' to folk0, try getting page from
+ # there. Ideally we would have some general (Avahi?)
+ # way of finding the 'authoritative' node on the local
+ # network, or broadcasting out, and getting pages from
+ # there.
+ exec curl --output "$::env(HOME)/folk-printed-programs/$obj.folk" \
+ "http://folk0.local:4273/printed-programs/$obj.folk"
+ }
+ set fd [open "$::env(HOME)/folk-printed-programs/$obj.folk" r]
+ }
+ set code [read $fd]
+ close $fd
- if {[file exists $tempPath]} {
- set path [open "$::env(HOME)/folk-printed-programs/$obj.folk.temp" r]
- } else {
- set path [open "$::env(HOME)/folk-printed-programs/$obj.folk" r]
+ Claim $obj has program code $code
+ } on error error {
+ puts stderr "No code for $type $obj"
}
- set code [read $path]
- close $path
-
- Claim $obj has program code $code
- } on error error {
- puts stderr "No code for $type $obj"
- }
}
diff --git a/virtual-programs/web-printed-programs.folk b/virtual-programs/web-printed-programs.folk
new file mode 100644
index 00000000..8c90db73
--- /dev/null
+++ b/virtual-programs/web-printed-programs.folk
@@ -0,0 +1,9 @@
+Wish the web server handles route {/printed-programs/(\d+)\.folk$} with handler {
+ regexp {/printed-programs/(\d+)\.folk$} $path -> id
+ set filename "../folk-printed-programs/$id.folk"
+ set fp [open $filename r]
+ set data [read $fp]
+ close $fp
+
+ dict create statusAndHeaders "HTTP/1.1 200 OK\nConnection: close\nContent-Type: text/plain; charset=utf-8\n\n" body $data
+}