From 0f21d318e395ab976f29c3ae18fe2139c22511bf Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Tue, 21 Nov 2023 13:02:43 -0500 Subject: programs: Expose web printed-programs/; fault to folk0 --- virtual-programs/programs.folk | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'virtual-programs/programs.folk') 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" - } } -- cgit v1.2.3