You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.6 KiB
35 lines
1.6 KiB
# Scriptform Developer guide
|
|
|
|
## Build rules
|
|
|
|
Build rules for testing, generating documentation and generating packages are
|
|
stored in `build.sla`. These can be run directly from a POSIX compliant shell,
|
|
or you can use the [Simple Little Automator](https://github.com/fboender/sla)
|
|
for convenience.
|
|
|
|
## Inner workings
|
|
|
|
1. Instantiate a `ScriptForm` class. This takes care of loading the form
|
|
config (json) file and provides methods to run the server.
|
|
2. If running as a daemon:
|
|
a) Instantiate the `Daemon` class
|
|
b) Hook up a callback to shutdown the ScriptForm server
|
|
c) Start the daemon. This detaches from the console.
|
|
3. Start the ScriptForm server. This listens on a port for incoming HTTP
|
|
connections.
|
|
4. If a request comes in, it is dispatched to the `ScriptFormWebApp` request
|
|
handler. `ScriptFormWebApp` inherits from the `webserver.RequestHandler`
|
|
class. The `WebAppHandler` determines which method of `ScriptFormWebApp`
|
|
the request should be dispatched to.
|
|
5. Depending on the request, a method is called on `ScriptFormWebApp`. These
|
|
methods render HTML to as a response.
|
|
6. If a form is submitted, its fields are validated and the script callback is
|
|
called. Depending on the output type, the output of the script is either
|
|
captured and displayed as HTML to the user or directly streamed to the
|
|
browser.
|
|
7. GOTO 4.
|
|
8. Upon receiving an OS signal (kill, etc) the daemon calls the shutdown
|
|
callback.
|
|
9. The shutdown callback starts a new thread (otherwise the webserver blocks
|
|
until the next request) to stop the server.
|
|
10. The program exits.
|
|
|