about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2021-02-24 r/2232 feat(gs/system): Add config for laptop batteryGriffin Smith4-4/+17
hibernate on low battery, and when the power button is pressed Change-Id: I6560fc770ee5707e59fb2763614de2b8000e156e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2550 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-02-24 r/2231 feat(gs/home): Alias cch=cargo checkGriffin Smith1-0/+1
Change-Id: I4b0ef2f5996b6cf34724a0ed6b1c8081baa4d929 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2549 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-02-24 r/2230 feat(gs/home): Install juliaGriffin Smith1-0/+1
Change-Id: I66820d3209f0ef6120f2946acc2063cfd638512f Reviewed-on: https://cl.tvl.fyi/c/depot/+/2548 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-02-24 r/2229 feat(gs/system): Install mypaint and xdotGriffin Smith1-0/+2
Change-Id: I4153911c4ef701c10106fddd5f3bef2263aac5c3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2547 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-02-24 r/2228 fix(gs/emacs): drop spellcheckerGriffin Smith1-1/+1
Change-Id: I841b7407f80d5096a32ee9019c1e02d26c015fc0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2546 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-02-24 r/2227 feat(gs/emacs): Add some more w3m bindingsGriffin Smith1-4/+5
Change-Id: I764b810245b2ec0bb1b76f6641b9baf2fab08be6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2545 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2021-02-24 r/2226 chore(ops/journaldriver): Expand wildcard importsVincent Ambo2-3/+5
... to appease Profpatsch. Change-Id: Id8576645a6920312c2304ea7880524d9cda8e21b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2544 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-22 r/2225 feat(tazjin/emacs): Add #'rg-in-projectVincent Ambo3-2/+12
Uses project.el to anchor the ripgrep search. In combination with my project detection logic, this means that grepping in TVL subprojects works automatically. Change-Id: I2705466d1de156c08ff0401a71112864aa24f976 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2542 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-02-19 r/2224 feat(nix/readTree): give better error message when not a functionProfpatsch4-1/+27
When a file is added to the depot tree that is picked up by read-tree, but it’s not a function like ({...}: {}), `readTree` will fail on the function application, leading to a bad error message. We can do slightly better, by checking the type and throwing a nicer trace message. `assertMsg` is copied from `nixpkgs/lib/assert.nix`, since at this point we don’t have a reference to the lib. There is another evaluation failure that can happen, which is when the function we try to call does not have dots; however, nix does not provide any inflection capabilies for checking whether a function attrset is open (`builtins.functionArgs` only tells us the attrs it mentions explicitly). Maybe the locality of the error could be improved somehow. Change-Id: Ibe38ce78bb56902075f7c31f2eeeb93485b34be3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2469 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-02-19 r/2223 chore(3p): Remove git-bugVincent Ambo3-41/+0
We stopped using this in favour of //web/panettone quite a while ago, so lets clean it up. Change-Id: I8aa8d86288933d470ab3962ffbb60294eaddd27b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2540 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi>
2021-02-19 r/2222 fix(nix/yants): make (typedef …).checkType return a result setsterni1-3/+7
Previously, for types defined using typedef (like all primitive types) type.checkType would return a boolean. This is largely fine since in most places `type.checkToBool (type.checkType x)` or similar is used. However, some functions actually take type.checkType up on the promise that it returns a set of the form: { ok = <bool>; err = <option string>; } This is the case for restrict which has checkToBool = v: v.ok; and will generate a proper set except if `t.checkToBool (t.checkType v) == false` in which case it will return t.checkType v. If t was a primitive type or defined using typedef, previously `t.checkType v` would be a boolean which meant as soon as (restrict …).checkToBool was called on a restrict checkType result in cases where the wrapped type didn't match, an unrelated error would be thrown: nix-repl> with nix.yants; restrict "foo" (_: true) int "lol" error: value is a boolean while a set was expected, at /home/lukas/src/depot/nix/yants/default.nix:38:39 This is fixed by making typedef return a proper set from checkType and adjusting its checkToBool accordingly. Unfortunately I don't think we can easily add test cases for this except by using recursive nix or VM tests as there is no way to introspect error messages. Change-Id: I96a7be065630f04ca33358f21809284911ec14fe Reviewed-on: https://cl.tvl.fyi/c/depot/+/2536 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-19 r/2221 chore(3p): Bump NixOS channels to 2021-02-18sterni7-20/+11
Main motivation for this is to get the openldap update that fixes 10 CVEs: CVE-2020-36221 to including CVE-2020-36230. See also this issue which lists them all: https://github.com/NixOS/nixpkgs/issues/113490 Someone should also redeploy whitby as soon as this lands in canon and all build failures have been fixed. Things done to resolve upstream breakages: * grpc no longer takes abseil-cpp as an input, it has also been removed in the override. * Upgrade glittershark's kernel to 5.11 since the linuxPackages_5_9 attribute has been removed by upstream and the patch used by them is available for 5.11 as well. * The fixed output hash for third_patry.apereo-cas changed for some reason. * Remove the pin of haskellPackages.vector from the haskell overlay. It broke as the most recent version of vector in nixos-unstable no longer depends on semigroups. This effectively updates vector from 0.12.1.2 to 0.12.2.0. * Align two comments in tvix/libstore/worker-protocol.hh because the updated clang-format now demands that. Change-Id: I2ecf10a98de935e9222acf1feaea447d4c11ed2d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2538 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org>
2021-02-19 r/2220 feat(tazjin/emacs): Add layout for reMarkable as primary screenVincent Ambo1-1/+7
Change-Id: I4c10e36250aa112d2dd0cebf4ed41e0b6fd8182d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2539 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-02-18 r/2219 chore(users/Profpatsch/netencode): update serdesterni1-4/+4
Was messing around with serde and trying to build serde_json something, might as well commit this. Change-Id: I60f87aa3180f750fa171eca7f9c375ed053f8456 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2537 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-18 r/2218 fix(nix/readTree): make nixFileName only match .nix extensionssterni1-1/+1
Nix unfortunately has terrible escaping syntax: If something is an escape sequence it does not know, like \0, it just swallows the backslash and returns the second character (byte) as is (yes, "\0" == "0" is true). This created the following bug in nixFileName which should have resulted in at least a parse error: "(.*)\.nix" is the same as "(.*).nix" which meant that nixFileName matched anything that is at least 4 characters long and ends in "nix". This lead to readTree creating double attributes when directories are involved or attributes for non-nix files. Change-Id: Ibf3be2bd189d48881c82ee795c50151bfb365627 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2535 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-02-14 r/2217 test(users/Profpatsch/writers): use testRustSimple on transitive libsterni2-3/+14
This adds a trivial test case on the transitive lib in tests and builds it by wrapping in with testRustSimple. This should check: * testRustSimple doesn't change the output and other packages can just use it as a normal dependency * tests are built and executed Change-Id: Ia4ea7425432b8b0da09f63054f51f0c480300aa4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2531 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-14 r/2216 feat(users/Profpatsch/netencode-rs): run tests with testRustSimplesterni1-15/+10
The rust tests are now automatically built and run if users.Profpatsch.netencode-rs is built without changing the content of its output. users.Profpatsch.netencode-rs-tests has been removed in favor of this, but can still be accessed as builtins.head users.Profpatsch.netencode.netencode-rs.drvDeps Change-Id: I25e8191f5b9efa08ace4a584a75978565c79d8d0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2530 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-14 r/2215 feat(users/Profpatsch/writers): testRustSimple to test rust cratessterni1-1/+30
testRustSimple is intended to wrap rustSimpleLib and rustSimpleBin and theoretically pkgs.buildRustCrate with { buildTests = false; } while building and running their tests, making them fail if the tests don't succeed. This is implemented using nix.drvSeqL which is a perfect fit here: * { buildTests = true; } only returns an output with the test binaries and does not actually run the tests. With drvSeqL we can easily wrap this derivation. * { buildTests = true } doesn't contain anything other derivations want to depend on, so it is an derivation output we don't want to have. drvSeqL hides the tests derivation away and only requires us to build it once. * Usually drvSeqL has the issue that tests (or advantage) are not rebuilt if the test derivation changes. This is no question in this case as due to the embedded nature of Rust's test, both the derivation with and without tests change anyways regardless of which part was changed. Future work: Allow injecting other tests? Change-Id: If6ecfb3a360ce059320dbb05642b391b617aede7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2529 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-14 r/2214 feat(nix/drvSeqL): make build of a drv depend on unrelated drvssterni1-0/+43
This adds the star of NixCon 2017 from vuizvui, slightly reformatted and now using yants. While it has some flaws, I realized that it is ideal to run the tests of rustSimple{Lib,Bin} where the normal and the -tests variant would have to be rebuilt if either the tests or the library / executable itself changes. Change-Id: Ie8f84f98c51c9fafc046eff916c8f0df7e8f224b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2528 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2213 fix(users/Profpatsch/netencode/gen/dwim): support derivationsProfpatsch1-5/+9
We forgot the special casing of derivations; if we recurse into a derivation like we’d recurse into an attrset, it always ends in tears, so dwim will just print the derivation path instead, which is usually what you want anyway. Change-Id: Ieed1b68dfcf8f2925ee3a75ae4f460fa5081da28 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2526 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-02-13 r/2212 fix(users/Profpatsch/lib/eprintenv): don’t crash when env is missingProfpatsch1-1/+4
eprintenv is a debugging tool, as such the code should probably not crash when the environment variable we want to look at is missing. But we can print a warning instead. Change-Id: I41a24dc0c1cc488587563b85c1adbd089dd364f2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2525 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2211 chore(users/Profpatsch/netencode): move nom dependencies to pkgsetProfpatsch2-23/+24
Change-Id: I7393f60e4b29f24399d681d4546ac35140650d1a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2524 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2210 feat(users/Profpatsch/netencode/record-splice-env): ignore non-scalProfpatsch1-3/+8
The headers are not a scalar, so record-splice-env doesn’t know how to convert them to an envvar; let’s just ignore everything that can’t be converted to a scalar for now. Change-Id: I74ed0aa942fcd26beb058705830bc2f2b516e93e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2523 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2209 feat(users/Profpatsch/netencode): add dec::TryProfpatsch1-5/+13
Tries to decode the inner type, turning it into an Option. Change-Id: I29d1286fe873c28d7c4a4b71f220acaf2d23f8e1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2522 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2208 feat(users/Profpatsch/lib): add runInEmptyEnvProfpatsch1-0/+11
Small helper that empties out the environment, except for the given list of variables. Change-Id: I5e265496aaa5c248136318aa1c6cd91a67d3f028 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2506 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2207 feat(users/Profpatsch/execline/exec_helpers): add args()Profpatsch2-1/+11
Some programs need an exact amount of arguments, and we want to fail if they get too many or not enough. Change-Id: Ic703949f38780718f26118b896e7c7d7aa5553d9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2504 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2206 feat(users/Profpatsch/execline/exec_helpers): add no_args()Profpatsch2-0/+11
Some programs don’t need any arguments, so fail if they do get them, because that’s usually a bug. Change-Id: I28639056d3d9cea0cc0e7fcbfa42120c4f129c8c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2503 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2205 feat(users/Profpatsch/netencode): add record-getProfpatsch1-0/+30
Projecting into one record field of netencode given on stdin. Change-Id: I975bd5558a06988aa159156ca73a449710db983f Reviewed-on: https://cl.tvl.fyi/c/depot/+/2502 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2204 fix(users/Profpatsch/arglib): remove env var after readProfpatsch1-2/+4
arglib should remove its arguments after reading it, to prevent them from leaking to any child processes. Change-Id: Ifc107b1620b8e407bad6b3d0ad7f4728856ec2ba Reviewed-on: https://cl.tvl.fyi/c/depot/+/2501 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-13 r/2203 fix(users/Profpatsch/execline/exec_helpers): fix arg loop off-by-1Profpatsch1-1/+1
Change-Id: If20a91eaa6693ba35ce645b104c625dbd0c71726 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2500 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-12 r/2202 feat(nix/yants/tests): test drv typesterni1-0/+10
By using an extremely trivial derivation we can ensure that it will not throw if evaluated using deepSeq. When using stdenv.mkDerivation or similar at some point something will most likely throw or generate some kind of error which is alright in the context of nixpkgs, but makes testing yants harder than you'd think it should be. Change-Id: I61ff7dc01a00a4815ef39066e4e223123356ddd5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2507 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-02-10 r/2201 fix(ops/www/tazj.in): Force SSL for git.tazj.in redirectVincent Ambo1-0/+1
Change-Id: If5b8096cb693d96936f9b954e2ebe3dc9b63af66 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2521 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-02-10 r/2200 fix(ops/www/tazj.in): Redirect git.tazj.in to our cgitVincent Ambo1-0/+5
Change-Id: Ia0be95e2618aeb4f8d394a8e3602c73faec0d72f Reviewed-on: https://cl.tvl.fyi/c/depot/+/2508 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-02-09 r/2199 feat(nix/yants/tests): port to runTestsuitesterni1-48/+92
Port existing tests to runTestsuite and add some obvious additional tests that wouldn't be possible before (using assertThrows and assertEq). Change-Id: Ibe950a7a0cda3e23ebb226bdff35f52cdfec5ddf Reviewed-on: https://cl.tvl.fyi/c/depot/+/2479 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: tazjin <mail@tazj.in>
2021-02-09 r/2198 feat(nix/runTestsuite): add assertDoesNotThrowsterni1-0/+7
assertDoesNotThrow is like assertThrows, but fails if the expression throws. In that case the new unexpected-throw branch of AssertErrorContext is returned. Change-Id: I7195eb5df8965456e9ab9b69e35ec96b33f00a35 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2476 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2197 refactor(nix/runTestsuite): implement in terms of generic assertBoolsterni1-26/+46
Refactor assertEq and assertThrows to be implemented in terms of a more generic assertBool to reduce code duplication and ease adding new assert types. To preserve meaningful error messages AssertResult is changed slightly: nope-eq and nope-throw have been replaced by a single nope branch which contains an AssertErrorContext which contains error information. To implement an assert assertBoolContext (which is not exposed) can be used: It takes an AssertErrorContext which is returned in case of an error and a boolean determining whether the assert was successful. The currently possible AssertErrorContext are: * should-throw: error result of assertThrows, formerly nope-throw * not-equal: error result of assertEq, formerly nope-eq Change-Id: Ifd6b3aa4187c90c3add2df63fa7c906c8f03fd2d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2473 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2196 feat(users/Profpatsch): add sterni to my user dir OWNERSProfpatsch1-0/+1
\o/ Change-Id: I4cc93ccc834bee4301ae6369e53f65ab975d4ea9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2505 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2195 feat(users/Profpatsch/read-http): use netencode::dec for arglibProfpatsch1-14/+13
Interestingly, the code is not any shorter, but a lot more declarative, and all parsing footwork and error message generation is done by the `Decoder` trait. \o/ Change-Id: Idb1064a3b5198e38e06e1860d4d71054ae53bbb9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2499 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2194 feat(users/Profpatsch/netencode): add dec::{Text,Binary,OneOf}Profpatsch1-6/+60
`Text` and `Binary` should be self-explaining, they just match on the primitive and throw an error otherwise. OneOf is cool, because it allows the user to match on the result type of decoding `inner`, and give a list of values that should be allowed as the result type (the associated type `A` in the `Decoder` trait). Change-Id: Ia252e25194610555c17c37640a96953142f0a165 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2498 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2193 fix(users/Profpatsch/netencode/gen: fix number generatorProfpatsch1-2/+2
Shouldn’t use the netstring function, since that adds the length of the containing string, which doesn’t make sense for numbers, they just have their one length number and content. Change-Id: I5591f6dd59154c5ef38d6e9b7300d19884a2d57b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2497 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2192 feat(users/Profpatsch/arglib): use exec_helpers for rustProfpatsch3-9/+11
Change-Id: I3056385eb11e45ae13456f4c47052651ba5fb62f Reviewed-on: https://cl.tvl.fyi/c/depot/+/2496 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2191 feat(users/Profpatsch/netencode): add `U::to_t()`Profpatsch1-7/+32
This fell out of us moving the `U::List` to a `Vec`. I noticed that now we have deep recursion for `U`s, which originally wasn’t intended; reverting to contain `&[u8]` might be a good experiment, as long as the lists stay a `Vec<&'a [u8]`, which was the thing preventing us from parsing lists without allocating memory. Change-Id: I4900c5dea460fa69a78ce0dbed5708495af5d2e1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2495 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2190 feat(users/Profpatsch/netencode): add `dec::RecordDot`Profpatsch2-6/+29
`dec::RecordDot` accesses a specific field of a netencode record. In order to implement this, either we’d have to introduce a type-level string, but in all honesty this kind of typelevel circlejerking never leads anywhere, so let’s change the trait to use `&self` after all. Usage is pretty much the same, except actually more like you’d expect. Change-Id: I5a7f1a3f587256c50df1b65c2969e5a7194bba70 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2494 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-09 r/2189 feat(users/Profpatsch/netencode): add `dec::AnyU` as idProfpatsch1-0/+26
Change-Id: I3037882dff15243bd7a5c1c78331f8e2ffdbda84 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2493 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
2021-02-06 r/2188 feat(users/Profpatsch/netencode): decode from UProfpatsch2-27/+28
Since we don’t necessarily need to decode deeply, we can make the decoders take a `U` instead of a `T`. Change-Id: I9704a21edb3922d58411e6807d027d684b18d390 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2492 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
2021-02-06 r/2187 feat(users/Profpatsch/netencode): `encode()` impl for T and UProfpatsch2-5/+46
Also change the toplevel `encode()` to take a `&U` instead of an owned `U`. Change-Id: I8e51540cc531e70ae1c94e3676f4dd88da7a924d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2491 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
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>