| Commit message (Collapse) | Author | Files | Lines |
|
Among them
- always set correct exit codes
- refuse to write out files if the out path already exists
- calculate the overall severity correctly
- slightly changed the json output schema
- also output the text output format in json
- make the default config.json suitable for a production environment
|
|
some parts of haskell are really, really old …
|
|
|
|
|
|
this allows for creating custom URI "schemas" in the linter's config,
which may be either allowed, prefixed, or translated according to
some (domain-based) substitution.
|
|
(these use a rather crude regex for parsing, which may be possible to
side-step, and which should probably be replaced by something that was
actually written while following the relevant rfc)
|
|
we don't want to accidentally copy maps, whoopsie
|
|
|
|
I have no idea why these even exist, but apparently they do, so here's
some code to deal with them in a hopefully useful manner …
|
|
(mostly to do with the scripting API, but also some old ones which are
already deprecated / not even mentioned in the documentation anymore)
|
|
|
|
|
|
I found yet more properties that weren't really documented or weren't
marked as optional, hurray!
|
|
the unhelpfulness of the spec is slowly starting to grate …
Anyways, apparently a lot more properties don't have to be present, and
you find out by finding maps somewhere that work but currently fail the
parser.
|
|
|
|
|
|
|
|
(this would otherwise break the json schema if `--json` is given)
|
|
|
|
|
|
|
|
also yet another typeclass™, because why not?
|
|
|
|
This got kinda out of hand, but it can now (a) read a json config file
and (b) patch that with another json given on the command line to change
some of the options given in the file.
No, I probably didn't need to make the `patch` function sufficiently
general to work with arbitrary records, but it was kinda fun to do.
|
|
(but not (yet?) on missing maps/entrypoints)
|
|
|
|
|
|
(also fix some hlints)
This removes some code that was apparently dead and I never noticed. I
only noticed now since it wouldn't work with the newer versions of Aeson
anymore.
|
|
|
|
this also includes some more monad plumbing, and an option for the
linter to actually write things out again. Some of the previous commit
was reverted a bit since it turned out to be stupid, but overall it was
suprisingly easy once I got around to it, so yay! i guess
Also includes a fairly silly example of how to use it.
|
|
I'm not sure if this is the right approach tbh — it lets the LintWriter monad
modify its own context, but maybe we might run into cases where lints and
modifications depend on each other across longer "distances" than just the
context of the linter (i.e. just across a property?)
|
|
|
|
(and one that contains almost only mempty can be written much shorter
than I thought it could)
|
|
|
|
|
|
|
|
(apparently, some of them aren't even in the spec, just the changelog!)
|
|
the previous state was a hacky mess
|
|
for now, just with layers. Instead of listing by layer (and giving
lints multiple times), list by lint type (and list all layers in which
this lint was applicable).
This is a bit wonky for now, but readability of output is much better.
|
|
This cleans up all the old rubble that came from the Tiled package I
originally took from hackage. It now uses generics instead of
implementing all the ToJSON and FromJSON instances by hand, and
(deserialize . serialise) will now actually return a (semantically)
equivalent json.
It'll now also reject keys that it doesn't know, which required adding
some in several places which the tiled package didn't know about (or
which were introduced after it was originally written, dunno).
Several more Maybes are required now, to represent the difference
between e.g. empty lists and on set value, which does make the code
slightly weirder in other places …
|
|
the previous state appears to have been an oversight and made no sense
at all.
|
|
this reorganised the whole linting for tilesets somewhat; it's now very
similar to that linting layers, and it may be possible to abstract some
of the code away ...
|
|
|
|
|
|
|
|
|
|
|
|
This is purely based on a set difference, i.e. it won't catch stupid
things like a map linking to itself, a map link going only one-way, etc.
Also, it only handles map links; it doesn't check if all ressource files
referenced by a map actually exist.
|
|
also, configurable log level, which only required relaxing the type
system once!
|
|
|