Age | Commit message (Collapse) | Author |
|
I'm still working on figuring out operator precedence with my custom operators.
The normal precedences don't work well for writing code in a pipeline as I like,
so I have to re-define the operators with my own fixity settings. This will take
some fiddling to get right.
The user subscription allows setting to "Free" only now. It's fine because I
still need to do a design refresh on the pages I just made. One thing I noticed
is that it's getting harder to make changes without breaking stuff, so I either
need to make smaller incremental changes, or actually write some real tests.
I'll probably write tests soon.
|
|
- print results sequentially instead of all at once at the end
- don't try and run all linters concurrently
- filter out directories (can't lint those)
|
|
|
|
Also improved the test situation, did some refactors, and now listing the user's
past analyses on their account page.
|
|
|
|
|
|
- structured log messages
- compact logs rewrite the line on bild completion
- using conduit for streaming output (although I think this isn't working quite
right)
- new Proc type for running subprocesses
- general code cleanup and refactoring
|
|
|
|
|
|
Keep Analysis runs, with a unique id, and index them based on ID, which user
asked for the analysis, and commit sha.
|
|
|
|
|
|
The footer is just a copyright for now. The header is full width, main and
footer max out at 900px. This seems like a reasonable default, so I put it in
the base Biz/Look.hs.
|
|
|
|
I really could use those structured logs.
|
|
I'm borrowing heavily from Basecamp.com, but I figure after enough itreation I
will settle on something more unique. Anyway, copying Basecamp isn't so bad --
they are a great company after all!
|
|
|
|
My qutebrowser dark filter messed up my colors. Also now I'm using header and
main HTML elements.
|
|
Part of a larger effort, but doing this iteratively in smaller chunks.
|
|
|
|
|
|
|
|
|
|
This makes scanning logs *much* easier. I figure keep it as simple as possible,
just red, yellow, and green.
I also added two spaces between labels in the log messages. It would be nice to
have a more structured logging system, but for now this works.
|
|
|
|
This argument will run the tests for an output after building. It's active in
'ci' so running that will ensure tests are passing. This way testing a
namespace and building a namespace are as close together as possible, so
presumably it will be that much easier to write good tests.
|
|
Also changes the --test option to a 'test' command. This is because running the
tests for a namespace/exe should never be combined with anything else: you
either want to run the tests, or not.
|
|
Wraps docopt rather nicely. It's much nicer than optparse-applicative and runs
tests with the --test argument automatically. Next I just need to implement a
test framework.
|
|
|
|
It was always showing 0 because of annoying numeric type conversion stuff. This
is my least favorite part of Haskell.
|
|
This necessitated adding a few more paths for clarity and such, and a type for
the analysis page. There seem to be some bugs with session handling I think, but
I'll suss those out later. Also I'm running into many uncaught exceptions so
eventually I will need to tackle those as well.
|
|
|
|
Auth was broken without the xsrf thing disabled. Anyway, its best to have
well-defined live and test settings. I will re-enable xsrf when I figure out the
js snippet I need.
|
|
|
|
Using lib.pipe for readability. Moved analyze into the public functions so I can
debug things easier by calling bild.analyze from the nix repl.
|
|
There is a bug in nixpkgs where lib.strings.splitString overflows on long lines.
builtins.split performs better, but needs the extra filter for some reason.
https://github.com/NixOS/nixpkgs/issues/68951
|
|
|
|
|
|
Boy that was harder than I thought, but the code is pretty clean now. I still
need to fixup the error handling, and maybe move all the extra args into an app
monad, but I think otherwise I have it in a good place.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Every key is just a new line in the $USER.pub file. This is not automatically
reflected to gitolite, which uses a separate config, so I'll need to come up
with a way to replace gitolite someday.
|
|
|
|
|
|
|
|
|