Skip to content
Snippets Groups Projects
Commit 9f724d13 authored by stuebinm's avatar stuebinm
Browse files

update readme

this isn't comprehensive or anything, but at least acknowledges that
this repo now contains more than just the linter
parent 508da680
Branches
No related tags found
No related merge requests found
# walint: lint & adjust workadventure maps
`walint` is intended as a simple linter that will check workadventure maps for
common errors, such as non-existent map entrypoints or missing asset files, and
additionally suggest changes to improve accessability.
### Overview & Components
Optionally, it can also *adjust* maps — e.g. to automatically insert property
values or help enforce an event's map policies — and then write them out again,
copying all needed assets and minifying the map's json. This is used to simulate
a `bbbRoom` property (via `openWebsite`), collect and remove badge tokens before
maps are published, and to resolve special-schema URIs (e.g. `world://`).
`walint` is intended as a linter for workadventure maps that checks for common
errors (such as non-existent map entrypoints or missing asset files) and makes
suggestions to improve accessability.
It can also *adjust* maps — e.g. to automatically insert property values or help
enforce an event's map policies (among other things, this is used to resolve
special inter-assembly `world://` links).
`walint-mapserver` is a minimal implementation of a server that periodically
fetches, lints, and adjusts maps from a set of git repositories, writing them
to a path that can then be served by a webserver. It can be used as a (very
simple) replacement for rc3's hub and mapservice at smaller events.
`cwality-maps` is a small server for type-safe map templating, to be used if
maps need to be generated on-the-fly — for example, to provide custom intermediate
maps displaying CWs before another map can be reached.
## Installing
......@@ -25,7 +34,7 @@ running `ldd walint` and see if anything is marked as not found, then install it
### Build using stack
This uses a lockfile to pin versions of dependencies (as well as `ghc`, the haskell
compiler). You will need [stack](https://docs.haskellstack.org/en/stable/README/).
compiler). You will need [the haskell stack](https://docs.haskellstack.org/en/stable/README/).
Then just run
......@@ -34,8 +43,8 @@ stack build
```
If you lack `ghc` in the correct version and don't know how to install it, you can
pass it `--install-ghc` to take care of that for you (note that on Nix, `stack` may
automatically use a fitting `ghc` derivation if it finds one).
pass it `--install-ghc` to take care of that for you (note that on NixOS, `stack` may
use a fitting `ghc` derivation if it finds one, even without `--install-ghc`).
To install into your `$PATH`, use
......@@ -50,25 +59,11 @@ stack run -- walint [options as normal]
```
However, in this case stack will re-check files every time to ensure your build
is up to date with the sources, which will make it slower to start.
is up to date with the sources, increasing startup time.
### Build using cabal
Note that this does not pin dependencies, and `walint` currently does not even
define semver ranges to ensure it compiles at all! Even so, you can use
[cabal](https://www.haskell.org/cabal/) if for some reason you absolutely must,
as long as your package list is sufficiently recent.
Run:
```
cabal update
cabal build
```
Note that `cabal` might decide to pull in an older version of Aeson which is
still vulnerable to hash flooding; in that case `walint` will print a warning
on startup.
You can, but probably should not. Beware of older Aeson versions!
## Usage
``` sh
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment