Commit Graph

57 Commits

Author SHA1 Message Date
Radon Rosborough 3541169779 Start and stop LSP 2021-08-15 16:32:09 -07:00
Radon Rosborough 02ff4aaaef Misc fixes 2021-08-15 12:18:59 -07:00
Radon Rosborough c7e3e56bd2 Fix a few silly errors 2021-08-14 21:44:09 -07:00
Radon Rosborough f19e850e0d Effective teardown, and Sentry integration 2021-08-14 21:37:31 -07:00
Radon Rosborough e197ad9c72 API mostly working aside from LSP 2021-08-14 18:37:07 -07:00
Radon Rosborough 157176f013 Off by one 2021-08-14 14:24:05 -07:00
Radon Rosborough 50ade82e81 Get sandbox mostly working 2021-08-13 18:08:54 -07:00
Radon Rosborough ac79035580 Progress on sandbox, drop node-pty dependency 2021-08-12 19:38:39 -07:00
Radon Rosborough 0bec96b88b Add code formatters for Riju itself 2021-07-17 00:50:42 -07:00
Radon Rosborough 256d5d1f2b Many things 2021-07-12 04:22:42 +00:00
Radon Rosborough 320b17777c Some embarrassing mistakes 2021-07-11 21:43:58 +00:00
Radon Rosborough ada1b64fc1 Debugging 2021-07-11 06:48:01 +00:00
Radon Rosborough b96c4ca7eb Should be ready to go now?? 2021-07-10 23:52:19 +00:00
Radon Rosborough 44de19946e Miscellaneous fixes 2021-07-10 22:24:42 +00:00
Radon Rosborough ea35395027 Try to make supervisor less broken 2021-07-10 20:50:32 +00:00
Radon Rosborough f9423f1482 Fail tests on bad exit status 2021-07-10 20:09:18 +00:00
Radon Rosborough c85ed6d586 Support RIJU_DEPLOY_CONFIG 2021-07-05 14:42:37 +00:00
Radon Rosborough 719b16f3c0 Infrastructure go brrr 2021-07-04 17:13:59 +00:00
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