about summary refs log tree commit diff
path: root/users/Profpatsch
AgeCommit message (Collapse)AuthorFilesLines
2021-02-06 r/2186 feat(users/Profpatsch/{netencode,http-parse}): use HashMapProfpatsch3-30/+48
`U::Record` is required to be a hash map (later keys should be ignored), so why not do the hash map immediately. This surfaced a problem with read-http, because duplicate headers in http are possible, but before they’d be silently ignored. Now we merge them into a `U::List` in case, to be handled by consumers of read-http. Change-Id: Ifd594916f76e5acf9d08e705e0dec2c10a0081c9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2490 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-06 r/2185 fix(users/Profpatsch/execline): fix exec_into_args off-by-1Profpatsch1-2/+2
We expect the users to pass an actual prog, not an argv, so 0 is the program to exec into. Also improve the exec error, by including the program we tried to exec into (the rust IO error doesn’t contain the name). Change-Id: I664f9f717e4f82bfc1b1da3bd7114124b7582d5f Reviewed-on: https://cl.tvl.fyi/c/depot/+/2489 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-02-06 r/2184 feat(users/Profpatsch/netencode): nest Us in U::ListProfpatsch1-32/+18
Earlier we left the next level of values unencoded, since lists are just concatenated netencode values. But I noticed that you can’t write e.g. a `t_to_u` function, because only in the case of lists you need to allocate memory. Turns out that if we read the next level of values, everything is handled the same as in `Record` and things suddenly start working. We can also throw away some of the strange and ad-hoc parser helpers we needed before, `skip` and `list_take`, since now those are just normal `Vec::iter().skip()` and take. Change-Id: Ibc476e028102944a65c2b64621047086cfc09aa5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2488 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-02-06 r/2183 fix(users/Profpatsch/netencode): decode U::Text directly into strProfpatsch2-15/+15
Since `Text` is a scalar, it doesn’t make sense to delay the utf-8 verification to the consumer. Change-Id: I36e4d228fbf35374d7c1addb4b24828cf6e927e5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2478 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-06 r/2181 fix(users/Profpatsch/netencode-rs-tests): reflect changed T::List typesterni1-1/+1
a044a870849d03b3a71df17e589112e0c228a06e removed boxes in T::List, but the tests were not adjusted accordingly. Seems like netencode fell victim to CI not recursing into attrsets not generated by readTree in pipeline generation. Change-Id: I65d58a82881059983f7d6bc7a32263c6671ccbba Reviewed-on: https://cl.tvl.fyi/c/depot/+/2486 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-02-06 r/2180 fix(users/Profpatsch/netencode_mustache): add arglib crate to depssterni1-0/+1
Seems like 5d44df3af65767e731c0dd239bd1d9664edbb361 forgot to add the newly split out crate to the dependencies of netencode_mustache. CI didn't pick up on it since it is hidden away from readTree in an attrset in a file. Change-Id: I7df9a636d849de48a99562d1cda8c0e6765f4781 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2485 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2176 feat(users/Profpatsch): add die_* helpers for semantic exit errorsProfpatsch5-28/+80
There is this semantic exit code schema championed by execline and skaware tooling, and we refined and documented it a bit in lorri https://github.com/nix-community/lorri/blob/d1d673d42090f0cfe8ab9b92b465315a9e7d30a3/src/ops/mod.rs#L24-L35 in the past. This just transcribes the error messages into simple helper functions. Applies the functions to the places where we would panic or die `sys::exit()` instead. Change-Id: I15ca05cd6f99a25a3378518be94110eab416354e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2475 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2175 feat(users/Profpatsch/execline): add args_for_execProfpatsch3-25/+50
`exec_into_args` would just read argv and exec into it, but we want to be able to write commands which take some positional arguments first. Thus we split the invocation into `args_for_exec`, which returns the positional arguments and prog, and then pass prog to `exec_into_args` when we want to exec eventually (prog is still an iterator at this point). Change-Id: I0b180c1a100b96363fe33ba2c42034ed41716b7a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2474 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2174 fix(users/Profpatsch/read-http): actually parse asciiProfpatsch3-3/+12
There might be exploits since we parsed the headers as utf8 even though we actually want to interpret them as ASCII. This fixes it, by using the ascii crate. Thanks to @sterni for noticing. Change-Id: I50b6a588d99b34e677cb22968cf0dfd8b331d11c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2457 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-31 r/2173 feat(users/Profpatsch/netencode): add record-splice-envProfpatsch1-0/+25
Splice a netencode record from stdin into the environment. Change-Id: I7eac19e18164e070e4463ee431d9b0e955857b9c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2454 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2172 feat(users/Profpatsch/netencode): add decoder moduleProfpatsch1-0/+46
Decoders are implemented not directly on output types, but on trivial proxy types, so that we can easily combine those into a decoder, and then the associated type is the actual return value of the decoder. Change-Id: Ibce98fa09fc944e02ab327112ec7ffbc09815830 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2455 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2171 feat(users/Profpatsch/execline): add exec helpersProfpatsch1-0/+27
Most tools end by execing into their argv, so here’s a small rust function which does the boilerplate. Change-Id: I9748955cf53828e02f04d7e8d74fbaf10c1158b5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2453 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2170 refactor(users/Profpatsch/netencode): rust read from stdin helperProfpatsch1-1/+13
Change-Id: I195c0212e224f676de5db37807731b814f99e818 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2452 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2169 refactor(users/Profpatsch/read-http): parse headers as utf8Profpatsch1-9/+11
Headers should always be ASCII, so let’s crash if they are not. The thing gets a lot easier to use, and clients who fail this restriction can just fuck off. Also actually print the results to stdout instead of stderr … Change-Id: I782c96c537ae11b541175e96453c4114e0a71b05 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2451 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2168 fix(users/Profpatsch/lib): eprintenv should exec into progProfpatsch1-1/+1
Change-Id: I2eab4ce24871121381011c1cfc8ef5e042502cb2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2450 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-31 r/2167 refactor(users/Profpatsch): move arglib_netencode into its own libProfpatsch2-21/+43
arglib is the simple idea of passing structured data via a conventional environment variable instead of implementing an optparser for every little tool. Pop the envvar, decode the contents, return the contents. Change-Id: Ie44148293a58aae9a0a613895176227d43b491bb Reviewed-on: https://cl.tvl.fyi/c/depot/+/2449 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-27 r/2150 feat(users/Profpatsch): add read-httpProfpatsch3-0/+217
reads a http request or response from stdin, and parses its headers into a netencoded record. Darn rust code took way too long to write. Change-Id: Ie99faa6d4bbd4996fa4e43fb119a11d85b611c99 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2447 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-27 r/2149 chore(users/Profpatsch/netencode): netencode.nix -> gen.nixProfpatsch2-2/+2
Change-Id: I7ccbfe863fbff65015caa8c740b80c4bb5c59dc1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2446 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-27 r/2148 feat(users/Profpatsch/netencode): add dwim function to nix genProfpatsch1-1/+17
Basically what you expect, strings to text, ints to 64-bit integers, attrs and lists to nested records and lists. Change-Id: I9d3d841f32ab32a152cd61522f02ebde4a9b11d3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2444 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-27 r/2147 fix(users/Profpatsch/netencode): remove Boxes in AST structProfpatsch1-27/+27
Apparently HashMap and Vec already do internal boxing, so the extra indirection in the value isn’t needed. Then, in order to make things uniform, move the boxing of `Sum` into the `Tag` value. No extra boxing in the recursion! \o/ Change-Id: Ic21d2e3e6ac0c6e1f045bf2c9d3e9c5af446fcff Reviewed-on: https://cl.tvl.fyi/c/depot/+/2443 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-23 r/2139 feat(users/Profpatsch/netencode): rename spec -> READMEProfpatsch2-1/+1
Change-Id: I0afda1c3705b8789cf6a0c57f7b74d005deb4ff5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2433 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-23 r/2138 feat(users/Profpatsch/netstring): add READMEProfpatsch1-0/+18
Change-Id: I2b5e74f376ac2212ec12fd85267e115621095639 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2432 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-23 r/2137 feat(users/Profpatsch/netstring): add rust to_netstringProfpatsch3-23/+48
Change-Id: I539472fc9ebc3ebe6c34e01fde9c08d3e2e3558c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2431 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-17 r/2121 feat(users/Profpatsch): set up a file watcher for tree sitterProfpatsch3-10/+132
Uses inotify to watch a file and print when it is modified, so we can update the parser and display the sexp on the terminal. Now the setup is good enough to start experiementing with queries on the syntax tree. Change-Id: I091587fc495ff627c79a69a52915aaaa8c51fcd2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2411 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-17 r/2117 feat(users/Profpatsch): add a tree-sitter parser for nixProfpatsch2-0/+162
Uses the rust library to set up a simple nix parsing expression, which reads a nix file and prints the sexp tree. Change-Id: I32dc9c7b39aa0f7ffa2b99348d6c2269e5fe1a6a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2402 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-11 r/2071 feat(users/Profpatsch): add script for randomly evaling nixpkgsProfpatsch2-6/+35
Running this after a codified refactor acts as a good smoke test, if a big subset of packages is broken or any central packages are broken, this should find them quite quickly, thanks to randomness™. Just let it run for a few minutes and check the errors that pop up. Change-Id: I1505dd31ca25b29254474a15cd6cb71d9743038a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2346 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: lukegb <lukegb@tvl.fyi>
2021-01-10 r/2070 feat(users/Profpatsch): add a rewriter for lib.stdenv changesProfpatsch3-0/+187
This is in order to advance the rewriting from stdenv.lib to lib. https://github.com/NixOS/nixpkgs/issues/108938 The hard part about changing the argument is that a package might not include lib in its arguments, which is why I use hnix to check whether lib is included and add it to the import list if it doesn’t already exist there. So far, only the really common pattern of meta = with stdenv.lib; is rewritten. Change-Id: I370f0a321b0e5a5bd21ec21fc7cefdd65ec845ed Reviewed-on: https://cl.tvl.fyi/c/depot/+/2345 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-03 r/2058 feat(Profpatsch/netencode): add netencode-mustacheProfpatsch3-1/+123
A little executable, combining the netencode and mustache libraries to make easy templating from the command line possible. Combined with the nix netencode generators, it’s now trivial to populate a mustache template with (nearly) arbitrary data. Yay. Change-Id: I5b892c38fbc33dd826a26174dd9567f0b72e6322 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2320 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-03 r/2057 feat(Profpatsch): dump netencode spec & parserProfpatsch4-0/+761
The netencode standard, a no-nonsense extension of netstrings for structured data. Includes a nix generator module and a rust parsing library. Imported from https://github.com/openlab-aux/vuizvui/tree/e409df3861f48de44d0e37277ce007e348a7a0dc/pkgs/profpatsch/netencode Original license GPLv3, but I’m the sole author, so I transfer it to whatever license depot uses. Change-Id: I4f6fa97120a0fd861eeef35085a3dd642ab7c407 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2319 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-03 r/2056 feat(Profpatsch/writers): add rustSimple writersProfpatsch3-10/+109
A bunch of writer functions wrapping the `buildRustCrate` functionality of nixpkgs. Can be used to write inline rust code, or rust code read from files with `builtins.readFile`. Change-Id: I9d74e9381b858b485925e4dc3fbb7fc392877c0a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2318 Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-03 r/2055 feat(Profpatsch): add netstring helper function & python libProfpatsch2-0/+103
Simple helper function to generate a netstring that is a list of key-value pairs, to serialize a nix dict. Also adds a python lib to read the serialized form into a dict again. Change-Id: I306c0cfd51640c0658d32c8d3a4f3d332ba448f0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2315 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-03 r/2054 fix(Profpatsch/writers): ignore the most annoying flake errorsProfpatsch1-3/+22
Change-Id: I3b8f51ff0dcdd842811e2fd9876cd4925c64f135 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2314 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-03 r/2053 feat(Profpatsch/writers): add yants types to python3 writerProfpatsch1-3/+8
Uses the new restrict type to make sure flake errors start with an E. Change-Id: I30369ade28e1ef612c91a368de2d5b128e6cf2a9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2313 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-03 r/2052 feat(users/Profpatsch): add writers.python3Profpatsch2-6/+31
This is a reexport of nixpkgs.writers.writePython3, but the libraries are passed the package set, like with other writers. Change-Id: Ia5a2ed1b6b329700836a8575d2bde768bf64fb31 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2311 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-01-03 r/2051 feat(users/Profpatsch): add python3Lib writerProfpatsch2-0/+62
Smol writer to create a python lib directly from a nix string. The resulting library can be consumed by the writePython3 writer. Change-Id: Id3d793564d230b38a08f65140bda4287285e1a72 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2310 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-01-01 r/2048 feat(emacs-tree-sitter-move): shell and json test filesProfpatsch2-0/+28
Change-Id: Idadb58a935abdbfa99327ba79de8b33d38b8c722 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2264 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-01 r/2047 fix(emacs-tree-sitter-move): get named parents & check for nilsProfpatsch1-8/+16
If there was no parent, the while loop would try to get the parent of a `nil`, which crashes and burns. We now also ignore any non-named parents; this might be unnecessary, if tree-sitter parent nodes are always named, but I don’t know that at the moment and it’s not documented very well, so better safe than sorry. Change-Id: Ia72ee9241b885ab312f8ecf7a8fbfece7eea8f1b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2263 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-01 r/2046 feat(emacs-tree-sitter-move): load more than one tree sitter grammarProfpatsch2-8/+23
Change-Id: I43b8ddb180c056f1b8c650ccc915ec41bae83960 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2262 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-01 r/2045 feat(emacs-tree-sitter-move): add a simple down movement as wellProfpatsch1-4/+4
Always goes to the first child for now. Change-Id: I1d00b2f2013ba7e5f88622d1de3c99500e5f1a7a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2261 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-01 r/2044 feat(emacs-tree-sitter-move): left and up movements, skip unnamedProfpatsch2-6/+22
We skip intermediate nodes that do not have any siblings, because they are irrelevant to navigation and just add extra keypresses without any highlight changes. This might not be the best choice, we’ll see. Change-Id: I75fbf79aa7915172e426442a076d57cfbebf5421 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2260 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-01 r/2043 feat(emacs-tree-sitter-move): Add tree-sitter-move-resetProfpatsch2-20/+27
Resets the cursor to the named node under the cursor. `-right` does not do it anymore, so it’s possible to navigate on higher levels of the tree instead of always resetting to a leaf. Change-Id: Id330854c72ea24da0cc8611f30f5617e0f127c1b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2259 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-01-01 r/2042 feat(users/Profpatsch): moving around via the tree-sitter parse treeProfpatsch5-0/+153
Has a little setup to get the cursor position and map it onto a tree sitter node. The current node is saved in a cursor variable, and a highlight overlay marks the range of the current node in the buffer. Change-Id: I0af56115f928732e993fbefe978a246ca7c757ee Reviewed-on: https://cl.tvl.fyi/c/depot/+/2258 Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2020-06-27 r/1096 feat(users/Profpatsch): add home directoryProfpatsch1-0/+3
Change-Id: Ia5ff68b67350dd72cb7a64260ec80881ba845660 Reviewed-on: https://cl.tvl.fyi/c/depot/+/623 Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: tazjin <mail@tazj.in>