diff options
| author | Omar Rizwan <omar@omar.website> | 2023-11-21 18:02:43 +0000 |
|---|---|---|
| committer | Omar Rizwan <omar@omar.website> | 2023-11-21 18:08:01 +0000 |
| commit | 0f21d318e395ab976f29c3ae18fe2139c22511bf (patch) | |
| tree | c64dadf422ed65f2656d7bce8da864198f753b54 /virtual-programs | |
| parent | Merge pull request #114 from FolkComputer/nm/text-halign (diff) | |
| download | folk-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.folk | 32 | ||||
| -rw-r--r-- | virtual-programs/web-printed-programs.folk | 9 |
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 +} |
