Adding website deploy.

This commit is contained in:
Brad Nelson
2021-01-08 18:50:11 -08:00
parent 144693a815
commit b8f5b992b6
6 changed files with 150 additions and 5 deletions

View File

@ -5,6 +5,7 @@ WEB = $(OUT)/web
POSIX = $(OUT)/posix
WINDOWS = $(OUT)/windows
ARDUINO = $(OUT)/arduino/ueforth
DEPLOY = $(OUT)/deploy
CFLAGS = -Wall -Werror \
-O2 \
@ -37,7 +38,7 @@ endif
TARGETS = $(WEB)/terminal.html \
$(WEB)/ueforth.js \
$(POSIX)/ueforth \
$(ARDUINO)/ueforth.ino
$(ARDUINO)/ueforth/ueforth.ino
# Selectively enable windows if tools available
ifneq (, $(shell which $(WIN_ARCH)-w64-mingw32-windres))
@ -50,7 +51,7 @@ else
$(warning "Missing $(WIN_ARCH)-w64-mingw32-windres skipping Windows.")
endif
all: $(TARGETS) tests
all: $(TARGETS) tests $(DEPLOY)/app.yaml
clean:
rm -rf $(OUT)
@ -171,14 +172,34 @@ $(WINDOWS)/uEforth.exe: \
# ---- ARDUINO ----
$(ARDUINO):
$(ARDUINO)/ueforth:
mkdir -p $@
$(ARDUINO)/ueforth.ino: \
$(ARDUINO)/ueforth/ueforth.ino: \
arduino/fuse_ino.js \
arduino/arduino.template.ino \
common/opcodes.h \
common/core.h \
$(GEN)/arduino_boot.h | $(ARDUINO)
$(GEN)/arduino_boot.h | $(ARDUINO)/ueforth
$^ >$@
# ---- PACKAGE ----
$(ARDUINO)/ueforth-arduino-esp32.zip: $(ARDUINO)/ueforth/ueforth.ino
cd $(ARDUINO) && zip -r ueforth-arduino-esp32.zip ueforth
# ---- DEPLOY ----
$(DEPLOY):
mkdir -p $@
$(DEPLOY)/app.yaml: $(ARDUINO)/ueforth-arduino-esp32.zip $(TARGETS) | $(DEPLOY)
mkdir -p $(DEPLOY)/static
cp -r $(ARDUINO)/ueforth-arduino-esp32.zip $(DEPLOY)/static
cp -r $(POSIX)/ueforth $(DEPLOY)/static/ueforth.linux
cp -r $(WINDOWS)/uEforth.exe $(DEPLOY)/static
cp -r $(RES)/eforth.ico $(DEPLOY)/static/favicon.ico
cp -r site/* $(DEPLOY)
deploy:
cd $(DEPLOY) && ./deploy.sh

27
ueforth/site/app.yaml Normal file
View File

@ -0,0 +1,27 @@
runtime: go115
default_expiration: "1m"
handlers:
- url: /robots.txt
static_files: static/robots.txt
upload: static/robots.txt
secure: always
- url: /favicon(.*)
static_files: static/favicon\1
upload: static/favicon.*
secure: always
- url: /
static_files: static/index.html
upload: static/index.html
secure: always
- url: /static
static_dir: static
secure: always
- url: /.*
script: auto
secure: always

3
ueforth/site/deploy.sh Normal file
View File

@ -0,0 +1,3 @@
#! /bin/bash
export CLOUDSDK_PYTHON=/usr/bin/python
gcloud app deploy --project eforth *.yaml

30
ueforth/site/eforth.go Normal file
View File

@ -0,0 +1,30 @@
package main
import (
"fmt"
"log"
"net/http"
"os"
)
func main() {
http.HandleFunc("/test", indexHandler)
port := os.Getenv("PORT")
if port == "" {
port = "8080"
log.Printf("Defaulting to port %s", port)
}
log.Printf("Listening on port %s", port)
if err := http.ListenAndServe(":"+port, nil); err != nil {
log.Fatal(err)
}
}
func indexHandler(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/test" {
http.NotFound(w, r)
return
}
fmt.Fprint(w, "Hello")
}

View File

@ -0,0 +1,55 @@
<!DOCTYPE html>
<body>
<h1>EForth</h1>
<p>
EForth is delightfully minimalist approach to Forth originated by Bill Muench and Dr. C. H. Ting.
</p>
<p>
In its original form metacompilation is avoided.
</p>
<h2>Download</h2>
<p>
<ul>
<li><a href="static/eEforth.exe">uEforth.exe</a> - Window EXE uEforth</li>
<li><a href="static/eforth.linux">eforth.linux</a> - Linux Executable uEforth</li>
<li><a href="static/ueforth.zip">ueforth-arduino-esp32.zip</a> - Arudino Source Code</li>
<li><a href="https://github.com/flagxor/eforth">http://github.com/flagxor/eforth</a>
- Complete Source Code (under ueforth)</li>
</ul>
</p>
<h2>EForth Quirks</h2>
<p>
EForth uses <code>FOR..NEXT</code> in favor of <code>DO..LOOP</code>.
<a href="https://github.com/TG9541/stm8ef/wiki/eForth-FOR-..-NEXT">Details</a>
</p>
<p>
This construct has the odd property that it iterates one "extra" time for zero.
</p>
<pre>
: FOO 10 FOR R@ . NEXT ; FOO
10 9 8 7 6 5 4 3 2 1 0 ok
</pre>
<p>
To permit a more ordinary loop the <code>AFT</code> word is used in the sequence
<code>FOR..AFT..THEN..NEXT</code>.
</p>
<pre>
: FOO 10 FOR ( 1st time only ) AFT R@ . THEN NEXT ; FOO
9 8 7 6 5 4 3 2 1 0 ok
</pre>
<p>
The even more enigmatic <code>FOR..WHILE..NEXT..ELSE..THEN</code>
is used in place of <code>DO..LEAVE..LOOP</code>.
It allows a while condition to early out of a counted loop.
</p>

View File

@ -0,0 +1,9 @@
User-agent: *
Disallow: /haiku-editor
Disallow: /haiku-submit
Disallow: /haiku-view
Disallow: /haiku-print
Disallow: /haiku-vote
Disallow: /haiku-bare
Disallow: /haiku-search
Disallow: /haiku-slideshow