summaryrefslogtreecommitdiff
path: root/Biz/Lint.hs
AgeCommit message (Collapse)Author
2023-10-03Rename BIZ_ROOT to CODEROOTBen Sima
BIZ_ROOT was too specific. CODEROOT allows for other (non-biz) projects to live in the root of the repo. I didn't want to call it GIT_ROOT because maybe someday I won't want to use git. But I'll never not use code.
2023-09-20Prototype MynionBen Sima
This implements a prototype Mynion, my chatbot which will eventually help me write code here. In fact he's already helping me, and works pretty well over xmpp. The prompt is currently not checked in because I'm experimenting with it a lot, and it should probably be a runtime parameter anyways. In the course of writing this I added some helper libraries to get me going, configured black (didn't even know that was possible), and added 'outlines' and its dependencies even though I didn't end up using it. I'll keep outlines around for now, but I'm not sure how useful it really is because afaict its just pre-defining some stop conditions. But it took a while to get it working so I'll just keep it in for now.
2023-09-19Parse and format deadnix json outputBen Sima
Deadnix was printing a bunch of unicode characters so it could draw lines to the source location of an error, and it would mess up my output. Anyway I didn't find that feature useful. Now I just get the json output and print the line number and error message for the lint failure. Also did some refactoring where I saw fit: added a log message so you know what linter is currently running, and cleaned up some syntax.
2023-09-19Lint faster by grouping files by extensionBen Sima
Previously I would lint every file individually, in serial. This took forever. Now I group the files by extension (by first getting the Namespace) and run each linter on all relevant files at once. This is so much faster its stupid. Also I added formatters back into the dev env because my editor needs them to autoformat.
2023-08-22Replace pylint with ruffBen Sima
Ruff is like a million times faster, and I mostly ignored pylint's suggestions anyway. I also took this opportunity to move lint tools into a runtime dependency on Lint.hs, which meant adding a wrapper to the Haskell builder, which was easy enough. This paves the way for proper rundeps in bild.
2023-08-17Add --no-cabal flag to ormoluBen Sima
2023-08-16Don't br after Log.info in lint outputBen Sima
2023-08-16Get python targets buildingBen Sima
I added 'black' to Biz/Lint.hs, but not the others because they rely on dependencies being in the PYTHONPATH to work, so they are only relevant in nix builds and repls. I also made some other tweaks to the python checkPhase and linted all the files. Everything should be building and linting correctly now.
2023-08-16Log and return output to callerBen Sima
The main change here is 'puts' now returns a value, this enables me to collect the value from the conduit source while also doing stuff with it, like printing or logging it as I want. Previously I was running conduit over the source, *and then* kicking off the concurrent processes to wait for the process and collect the output. This would (I think) drain the source before it got to the 'puts' conduit run, and so I wouldn't be able to get the output streamed in real time. It took a lot of refactoring and exploratory programming to get to this relatively-small diff, but now puts works correctly. At least I think it does... it seems to work more reliably from ghci than from the shell. Maybe the shell or TERM is causing nix-store to do some buffering? Maybe I need to use the threaded runtime in GHC? Not sure, but I will look out for this issue and try to identify and fix. Update: yep it was the threaded runtime. I enabled that and now it works in the shell. I squashed that commit into this one.
2023-08-16Lint concurrentlyBen Sima
Roughly a 2x speedup.
2023-08-07Working nixified python buildBen Sima
This represents quite a few evenings of hacking. It doesn't build all of my Python code, because my Python code is not up to snuff, but it builds the examples and pulls in third party dependencies. Some design points: - I'm using buildPythonApplication in Builder.nix because it was getting way too annoying to wrap the Python script and set PYTHONPATH myself. Easier and more robust to just use the upstream nix builder - Because of this, I had to generate a setup.py. Maybe switch to pyproject.toml in the future, whatever. - Also because of this, Target.wrapper is becoming redundant. I'll just remove it when I get Guile built in nix. - Biz/Bild.nix is getting messy and could use a refactor. - In Builder.nix, I worked around the empty directories bug by just finding and deleting empty directories after unpacking. If its stupid but works it ain't stupid! - I had to touch __init__.py files in all directories before building. Annoying! - `repl` just works, which is awesome - To ensure good Python code, I moved lints and added type checking to the build. So I can't build anything unless it passes those checks. This seems restrictive, but if I want to run some non-passing code, I can still use `repl`, so it's actually not inhibitory.
2023-05-03Add C indent linterBen Sima
2023-01-01Add black and pylintBen Sima
2023-01-01Support -h in Biz.CliBen Sima
2022-07-25Run deadnix as a linterBen Sima
2022-07-19Upgrade nixpkgs, ghc923Ben Sima
I ended up deleting miso, and consequently all files under Hero/ and Miso/, because I couldn't get miso to build with GHC 9.2. Other things: - Niv has been wrapped by Biz/Bild/Deps.hs, so I can extend it to my liking. - Apply-refact is gone because I couldn't get it to build. - Disabled python stuff.
2022-07-05Add Mode typeBen Sima
Removes 'boolean blindness'. I also fixed the issue with hlint erroring on `--fix` and clarified the `args` field.
2022-03-30Add isCab functionBen Sima
2021-12-21Enable shellcheck lint and fix its warningsBen Sima
2021-11-26Automatically detect Haskell dependenciesBen Sima
This parses the files contents for imports, then uses ghc-pkg to lookup the package that provides the module. Now I can do that analysis in Haskell instead of nix, which is much easier to code with.
2021-02-19Add support for hlint --refactorBen Sima
2021-02-17Add lint --fix featureBen Sima
2021-02-05Prefer traverse over mapMBen Sima
2021-02-05Add 'tidy' to PlanBen Sima
This is supposed to be how to cleanup the database and any other local files. Should only be used before/after test, so maybe I can find a way to enforce this constraint somehow in the code.
2021-01-29Lint 'return' into 'pure', replace bind operatorBen Sima
2021-01-27Set subscription in user page, operator precedenceBen Sima
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.
2021-01-26Refactor lintBen Sima
- 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)
2021-01-26Create Biz.Log library, extracted from Biz.BildBen Sima
2021-01-16Add colors to tooling outputsBen Sima
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.
2021-01-15Implement Biz.Test with tastyBen Sima
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.
2021-01-15Implement Biz.CliBen Sima
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.
2021-01-15Port lint to HaskellBen Sima