Radon Rosborough
442265a642
Yeesh
2021-07-03 19:09:47 +00:00
Radon Rosborough
fcf5432058
debug
2021-06-19 08:09:22 +00:00
Radon Rosborough
2638053405
Many misc changes
2021-06-18 23:10:20 +00:00
Radon Rosborough
ddb2fa0d4b
Hallelujah
2021-06-18 07:06:32 +00:00
Radon Rosborough
4e86dfc567
Add missing return
2021-06-18 07:06:32 +00:00
Radon Rosborough
b132840385
shell-quote is full of bugs -_-
...
seriously, how did this happen?? this is the one kind of library you'd
assume couldn't possibly have bugs, because it's so obviously critical
for the thing to be thoroughly tested. and it's not even complicated
functionality to implement...
2021-06-18 07:06:32 +00:00
Radon Rosborough
6c7fbf7fb1
Start fixing sandbox script
2021-04-30 23:13:15 -07:00
Radon Rosborough
d3cd61cdd6
Make stty conditional
2021-04-24 09:48:25 -07:00
Radon Rosborough
0e0ceebd9e
Workaround Docker bug with term size settings
2021-04-24 09:38:51 -07:00
Radon Rosborough
db41dfa0a3
Container process should have a pty
2021-04-24 09:25:55 -07:00
Radon Rosborough
d521eed1ce
Some random bugfixes
2021-04-23 20:33:57 -07:00
Radon Rosborough
1672e42960
Bugfixes for hashing
2021-03-21 21:53:22 -07:00
Radon Rosborough
1b975de021
Get containerized execution working
2021-03-21 14:45:13 -07:00
Radon Rosborough
224f8f7d9d
Misc fixes for containerization
2021-03-21 14:36:44 -07:00
Radon Rosborough
69f1c2ed58
Remove no longer correct comment
2021-03-21 14:16:23 -07:00
Radon Rosborough
4a79b95efc
Tear down old containers properly
2021-03-21 13:55:33 -07:00
Radon Rosborough
219fbed342
Start work on depgraph runner
2021-03-20 22:15:49 -07:00
Radon Rosborough
b99d17bcd3
Preliminary containerization work
2021-03-19 23:04:59 -07:00
Radon Rosborough
83208355d4
Load language configurations into server
2021-03-18 19:03:28 -07:00
Radon Rosborough
49e18e9830
Fix deprecated Express methods
2021-01-23 21:40:58 -08:00
Radon Rosborough
edad36a563
Fix language settings for Unison
2021-01-23 21:07:03 -08:00
Radon Rosborough
998811d3d4
Get lsp-repl working again
2021-01-18 09:48:42 -08:00
Radon Rosborough
b5267a4243
Fix alias mapping in Express
2021-01-18 09:41:03 -08:00
Radon Rosborough
a29329f71c
Install distutils for Hy, fix 'set -e' usage
2021-01-17 21:09:35 -08:00
Radon Rosborough
f013f7e26c
Work on a number of additional languages
2021-01-11 19:34:44 -08:00
Radon Rosborough
ac39b15e16
Make more languages work
2021-01-09 15:36:14 -08:00
Radon Rosborough
f50c177007
Get a bunch of new languages working
2021-01-09 14:07:10 -08:00
Radon Rosborough
670fabe177
Improve sandbox env, add shared dep support
2021-01-09 12:36:17 -08:00
Radon Rosborough
5752918068
Make users.js robust to concurrency
2021-01-07 21:09:33 -08:00
Radon Rosborough
9a99429f48
Miscellaneous work starting to support langs
2021-01-06 21:44:27 -08:00
Radon Rosborough
2daa11c7aa
Import all language configs into YAML
...
This was an absolutely disgusting operation. Here's the commands I
used to do it (see <https://docs.gomplate.ca/ > for the tool):
$ node
> require('fs').writeFile('langs.json', JSON.stringify(require('./langs').langs), console.log)
$ ./gomplate -c .=langs.json -f template.yaml > langs.yaml
$ cat langs.json | jq 'keys[]' -r L | while read lang; do cat langs.yaml | sed -n "/^ #START $lang\$/,/^ #END $lang\$/p" | tail -n+2 | head -n-1 | sed 's/^ //' > langs/$lang.yaml; done
I had some difficulty getting valid YAML to be generated, so I found
the tool at <http://www.yamllint.com/ > to be helpful in identifying
errors.
For validation that nothing important had changed in the
transformation, I used <http://www.jsondiff.com/ > to compare
langs.json against the output of this command:
$ ./gomplate -c .=langs.json -f template.yaml | node yaml2json.js | jq '(.. | select(type == "string")) |= sub("\n+$";"") | (.. | select(.template?) | .template?) |= (.+"\n") | (.. | select(.format?.input?) | .format?.input?) |= (.+"\n")'
Here's yaml2json.js:
import fs from "fs";
import YAML from "yaml";
console.log(JSON.stringify(YAML.parse(fs.readFileSync(0, "utf-8")), null, 2));
And here's the template.yaml, which is approximately the worst thing
ever:
{{ range . }}
"{{ .id }}":
#START {{ .id }}
id: "{{ .id }}"
{{ if has . "aliases" }} aliases:
{{ range .aliases }} - "{{ . }}"
{{ end }}{{ end }} name: "{{ .name }}"
{{ if has . "monacoLang" }} monacoLang: {{ .monacoLang }}
{{ end }}{{ if has . "info" }}
info:
{{ if has .info "impl" }} impl: "{{ .info.impl }}"
{{ end }}{{ if has .info "version" }} version: "{{ .info.version }}"
{{ end }} year: {{ .info.year }}
desc: "{{ .info.desc }}"
{{ if eq "string" (printf "%T" .info.ext) }} ext: {{ .info.ext }}
{{ else if eq 0 (len .info.ext) }} ext: []
{{ else }} ext:
{{ range .info.ext }} - {{ . }}
{{ end }}{{ end }} web:
{{ if has .info.web "wiki" }} wiki: "{{ .info.web.wiki }}"
{{ end }}{{ if has .info.web "esolang" }} esolang: "{{ .info.web.esolang }}"
{{ end }}{{ if has .info.web "home" }} home: "{{ .info.web.home }}"
{{ end }}{{ if has .info.web "impl" }} impl: "{{ .info.web.impl }}"
{{ end }} source: {{ if eq "string" (printf "%T" .info.web.source) }}"{{ .info.web.source }}"
{{ else }}null
{{ end }}{{ if eq "string" (printf "%T" .info.category) }} category: {{ .info.category }}
{{ else if eq 0 (len .info.category) }} category: []
{{ else }} category:
{{ range .info.category }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.mode) }} mode: {{ .info.mode }}
{{ else if eq 0 (len .info.mode) }} mode: []
{{ else }} mode:
{{ range .info.mode }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.platform) }} platform: {{ .info.platform }}
{{ else if eq 0 (len .info.platform) }} platform: []
{{ else }} platform:
{{ range .info.platform }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.syntax) }} syntax: {{ .info.syntax }}
{{ else if eq 0 (len .info.syntax) }} syntax: []
{{ else }} syntax:
{{ range .info.syntax }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.typing) }} typing: {{ .info.typing }}
{{ else if eq 0 (len .info.typing) }} typing: []
{{ else }} typing:
{{ range .info.typing }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.paradigm) }} paradigm: {{ .info.paradigm }}
{{ else if eq 0 (len .info.paradigm) }} paradigm: []
{{ else }} paradigm:
{{ range .info.paradigm }} - {{ . }}
{{ end }}{{ end }}{{ if eq "string" (printf "%T" .info.usage) }} usage: {{ .info.usage }}
{{ else if eq 0 (len .info.usage) }} usage: []
{{ else }} usage:
{{ range .info.usage }} - {{ . }}
{{ end }}{{ end }}{{ end }}{{ if or (has . "daemon") (has . "setup") }}
{{ end }}{{ if has . "daemon" }} daemon: |
{{ .daemon | indent 4 }}
{{ end }}{{ if has . "setup" }} setup: |
{{ .setup | indent 4 }}
{{ end }}{{ if has . "repl" }}
repl: |
{{ .repl | indent 4 }}
{{ end }}{{ if has . "input" }}{{ if .input | strings.Contains "\x1b" }} input: "{{ .input | strings.ReplaceAll "\x1b" "\\x1b" }}"
{{ else }} input: |{{ if .input | regexp.Match "^\\s" }}2{{ end }}
{{ .input | indent 4 }}
{{ end }}{{ end }}{{ if has . "output" }} output: |
{{ .output | indent 4 }}
{{ end }}
main: "{{ .main }}"
template: {{ if eq .id "whitespace" }}{{ .template | strings.Quote }}
{{ else }}|{{ if .template | regexp.Match "^\\s" }}2{{ end }}
{{ .template | indent 4 }}{{ end }}{{ if has . "prefix" }} prefix: |
{{ .prefix | indent 4 }}
{{ end }}{{ if has . "suffix" }} suffix: |
{{ .suffix | indent 4 }}
{{ end }}{{ if has . "createEmpty" }} createEmpty: "{{ .createEmpty }}"
{{ end }}
{{ if has . "compile" }} compile: |
{{ .compile | indent 4 }}
{{ end }} run: |
{{ .run | indent 4 }}
{{ if has . "helloInput" }} helloInput: |
{{ .helloInput | indent 4 }}
{{ end }}{{ if has . "hello" }} hello: |
{{ .hello | indent 4 }}
{{ end }}{{ if has . "helloMaxLength" }} helloMaxLength: {{ .helloMaxLength }}
{{ end }}{{ if has . "runReplInput" }} runReplInput: |
{{ .runReplInput | indent 4 }}
{{ end }}{{ if has . "runReplOutput" }} runReplOutput: |
{{ .runReplOutput | indent 4 }}
{{ end }}{{ if has . "scope" }}
scope:
code: |
{{ .scope.code | indent 6 }}
{{ if has .scope "after" }} after: "{{ .scope.after }}"
{{ end }}{{ if has .scope "input" }}{{ if .scope.input | strings.Contains "\x1b" }} input: "{{ .scope.input | strings.ReplaceAll "\x1b" "\\x1b" }}"
{{ else }} input: |
{{ .scope.input | indent 6 }}
{{ end }}{{ end }}{{ if has .scope "output" }} output: |
{{ .scope.output | indent 6 }}
{{ end }}{{ end }}{{ if has . "format" }}
format:
run: |
{{ .format.run | indent 6 }}
{{ if has .format "input" }} input: |
{{ .format.input | indent 6 }}{{ end }}{{ if has .format "output" }} output: |
{{ .format.output | indent 6 }}{{ end }}{{ end }}{{ if has . "pkg" }}
pkg:
install: |
{{ .pkg.install | indent 6 }}
{{ if has .pkg "uninstall" }}
uninstall: |
{{ .pkg.uninstall | indent 6 }}
{{ end }}{{ if has .pkg "all" }}
all: |
{{ .pkg.all | indent 6 }}
{{ end }}{{ if has .pkg "search" }}
search: |
{{ .pkg.search | indent 6 }}
{{ end }}{{ end }}{{ if has . "lsp" }}
lsp:
{{ if has .lsp "setup" }} setup: |
{{ .lsp.setup | indent 6 }}
{{ end }} start: |
{{ .lsp.start | indent 6 }}
{{ if has .lsp "disableDynamicRegistration" }} disableDynamicRegistration: {{ .lsp.disableDynamicRegistration }}
{{ end }}{{ if has .lsp "init" }} init:
{{ .lsp.init | data.ToYAML | indent 6 }}{{ end }}{{ if has .lsp "config" }} config: {{ .lsp.config | data.ToYAML }}{{ end }}{{ if has .lsp "lang" }} lang: "{{ .lsp.lang }}"
{{ end }}{{ if has .lsp "code" }} code: {{ .lsp.code | strings.Quote }}
{{ end }}{{ if has .lsp "after" }} after: {{ .lsp.after | strings.Quote }}
{{ end }}{{ if has .lsp "item" }} item: {{ .lsp.item | strings.Quote }}
{{ end }}{{ end }}{{ if has . "skip" }}
skip:
{{ range .skip }} - {{ . }}
{{ end }}{{ end }} #END {{ .id }}
{{ end }}
2021-01-02 10:14:26 -08:00
Radon Rosborough
accc4da201
All tests are passing for Python
2020-12-27 13:12:29 -08:00
Radon Rosborough
2dd3e31f1a
I hate writing Webpack configs. I hate it so much.
2020-12-27 12:42:06 -08:00
Radon Rosborough
d9014b2342
More fixes for CI
2020-12-26 20:36:24 -08:00
Radon Rosborough
2c12fdd04a
Various CI fixes, auto reload language configs
2020-12-26 20:26:03 -08:00
Radon Rosborough
2e6aafbcb3
Successfully run webserver from Docker image
2020-12-25 19:34:15 -08:00
Radon Rosborough
938e41b1c6
Python can be run interactively
2020-12-25 12:19:09 -08:00
Radon Rosborough
14f7bec490
Get main application page rendering
2020-12-25 12:06:25 -08:00
Radon Rosborough
d54d0fb5bb
Import webserver and get it running
2020-12-24 21:49:26 -08:00