Commit graph

15150 commits

Author SHA1 Message Date
Kane York
661353f200 chore(3p/nix/daemon): replace all assertStorePath with a macro
Two exceptions: IsValidPath needs to return success for invalid paths, and QueryAllValidPaths shouldn't need to check the paths it gets from itself.

Change-Id: I4d9d4125d34e8de42f30070aec607f8a902eded7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1598
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-08-03 18:46:45 +00:00
Vincent Ambo
1f12544179 refactor(3p/nix): Build nix-daemon as a separate binary
Skips over all the monobinary stuff and moves to a separate binary for
nix-daemon.

This also replaces the flag parsing logic with absl::flags. This
causes a behaviour change for --help, which no longer tries to display
a man page but instead shows the actual command-line help.

Note: This binary no longer links to the Boehm GC.

Change-Id: Ib852e994b82f2d56e91262878c10650e656427a9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1622
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-08-03 18:26:44 +00:00
Vincent Ambo
229c1ed820 chore(3p/nix): Move legacy Nix daemon implementation
The filename this is squatting is too good.

Change-Id: I694132b94d24786df84b6b5a698679bdce818b2e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1621
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-08-03 18:18:54 +00:00
Griffin Smith
209489e348 feat(3p/nix): Implement two more RPC calls
Implement AddTextToStore and BuildPaths both on the client and the
server

Refs: #29
Change-Id: I45294c3e1c1a7489e42099d36425b7acc04e0427
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1560
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Tested-by: BuildkiteCI
2020-08-03 17:32:27 +00:00
Kane York
8a1c7da357 feat(3p/nix/build-shell): add run_clang_tidy script
This makes it easy to quickly run clang-tidy on tvix without seeing errors from the generated files.

Change-Id: I0e25089c5626aebdb5c016629a68da9ccd26c124
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1556
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-08-03 17:06:41 +00:00
Profpatsch
0d8bb25bae feat(owothia): further owo nouns
Change-Id: I11876d617b6efed443b35b8193cc7a42cf0f0201
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1600
Reviewed-by: Profpatsch <mail@profpatsch.de>
2020-08-03 16:47:45 +00:00
Griffin Smith
117e7316a0 fix(web/panettone): Fix more calls to (id nil) in new issue form
Change-Id: Id514d80e00005b7b7eb2f305e92af33ca70d6964
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1594
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-08-03 13:40:47 +00:00
Griffin Smith
708e94532d fix(web/panettone): Fix new issue form
Passing a nil issue to this was breaking because you can't get the id of
nil. I am too used to clojure.

Change-Id: Icf76cbb23d902ec59fa97c21b134936fa40eb43e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1593
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-08-03 13:25:22 +00:00
edef
c9a645b69d chore(tvl-slapd): refresh edef's password
Change-Id: I5a7a913656bfb9dd6c9fb4e2b4a1212607c50dd3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1592
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-08-03 11:15:23 +00:00
edef
436145a41c fix(nix/fetchGoModule): correctly case-fold mixed-case package paths
Change-Id: I5a93462a23bf3c9f22fc3de0b173763a9bc8d526
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1591
Tested-by: BuildkiteCI
Reviewed-by: edef <edef@edef.eu>
2020-08-03 10:58:24 +00:00
William Carroll
9a19942c03 Add .ghci configuration file
Create a project-local .ghci file to define sensible
defaults (e.g. -Wincomplete-patterns).

TODO: Discover more GHC options to put in this file.

I would prefer to keep this at the project root, but because I'm running the
project from the src directory, I need to keep .ghci there.
2020-08-03 11:37:57 +01:00
edef
c17be2364e chore(3p/loxy): Move //users/edef/loxy to //third_party
Change-Id: Ia451d190d4e415ef875c51ebeca12c7c5dc72342
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1590
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: tazjin <mail@tazj.in>
2020-08-03 10:32:39 +00:00
edef
8d6fcbe1a5 chore(nix/fetchGoModule): Move //users/edef/fetchGoModule to //nix
Change-Id: Ie7f52367ef91c0c8017a36c2a6c7edb06f10e57d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1589
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2020-08-03 10:29:18 +00:00
Alyssa Ross
6b181d314f fix(3p/cgit): transpose html_option parameters
I got these the wrong way round, fixed them in the patch in my Nix
configuration, and then neglected to fix them in the version for
depot.

Fixes: be98295dc2
Change-Id: Ib7d4e433887f474ae9675e9948ab38f640181095
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1383
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Tested-by: BuildkiteCI
2020-08-03 10:28:44 +00:00
Vincent Ambo
46c78aa0f9 refactor(3p/nix): Only initialise garbage-collector where needed
Only libexpr depends on the garbage collector, specifically only
instantiations of EvalState actually require the GC to be initialised.

Rather than always starting it for the whole program, even if it is
not needed, this change moves the GC initialisation into libexpr,
guarded by absl::call_once.

This should make it possible to run the nix daemon without the garbage
collector interfering, granted that things are correcty separated and
the daemon does not actually invoke the evaluator.

Based on my investigation so far, the daemon logic itself does not
require libexpr to be present at all - so I think it is safe - but the
current monobinary might have some tricks up its sleeve that will
cause problems for us. We can deal with those if they arise.

Relates to https://b.tvl.fyi/issues/30

Change-Id: I61c745f96420c02e089bd3c362ac3ccb117d3073
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1584
Tested-by: BuildkiteCI
Reviewed-by: edef <edef@edef.eu>
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-03 08:38:57 +00:00
edef
6e04b23506 feat(edef/loxy): init
loxy(8) is a logging IRC proxy.

Change-Id: I78fd798ec32636cf38f877c364abc87ef9f14836
Co-authored-by: V <v@anomalous.eu>
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1587
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-08-03 08:18:02 +00:00
edef
2ab7561ac9 feat(edef/fetchGoModule): init
Change-Id: I160a4264b9ade35d7cfcc1609ab395eab164d4d8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1586
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-08-03 08:18:02 +00:00
edef
4a7b7e35b2 feat(edef): take ownership of //users/edef
Change-Id: Ic3bd9bf4ef354688bdd06961a348eb127dab97bd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1588
Tested-by: BuildkiteCI
Reviewed-by: ericvolp12 <ericvolp12@gmail.com>
Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-08-03 08:18:02 +00:00
edef
8862f3fbaf feat(3p): Whitelist unzip
Change-Id: Iae7e661dc45f8bc8668c1aa4fe82b88e8868c22f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1585
Tested-by: BuildkiteCI
Reviewed-by: ericvolp12 <ericvolp12@gmail.com>
Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-08-03 08:17:51 +00:00
Vincent Ambo
87d70d2a80 style(cheddar): Apply rustfmt
Change-Id: I378b5ae618b01244edc090ad1495fbd56857d7c0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1562
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 21:57:35 +00:00
Vincent Ambo
de27b3c1ff style(paroxysm): Apply rustfmt
Change-Id: I959b6a1008f1b0ef632c0194adc0f680e7c27d62
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1561
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 21:57:35 +00:00
Vincent Ambo
1faab13004 feat: Add rustfmt configuration for the whole depot
Most settings are left at the defaults.

There are a few more that we want, but even though a stable rustfmt is
perfectly capable of dumping them into a config file, it can not
actually use them.

I expect this will be mostly agreeable, with the exception of
`combine_control_expr`.

Change-Id: I66e3b4705e24dbba902e8847397365fcf31dd403
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1555
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <mail@tazj.in>
2020-08-02 21:57:35 +00:00
William Carroll
b9ed4a2dc1 Partially support federated login
Two things:
1. I've never attempted to support this before.
2. It seems surprisingly and perhaps deceptively simpler than what I
   expected. I'm unsure what to do once Google's API authenticates the user. I
   currently look-up the user's role, trips, etc. using their email address. The
   role is stored in the Accounts table alongside username, email, password. I
   will speak with the interviewer tomorrow about this.
2020-08-02 21:27:08 +01:00
Griffin Smith
56cba6e032 feat(gs/home): Bump alacritty version
Bump to alacritty 0.5.0 (which is happening by fetching YANNPP (Yet
Another Nixpkgs Pin) because overriding versions of rust packages is not
very well supported) and update the relevant home-manager version and
pin to get it installed and configured with vi-mode.

Change-Id: I4fd96bd0c0611ce76500c33bf0b2c680ee7f44c3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1583
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
2020-08-02 20:12:09 +00:00
William Carroll
d6b91b93cb Allow managers to delete users
Borrow the allUsers component

TODO: Move many of these CRUD tables into Common and DRY-up usages across User,
Admin, Manager.
2020-08-02 21:02:22 +01:00
Griffin Smith
cc82d6e360 test(3p/nix): Add test for derivation parse/serialize
Add a rapidcheck test covering roundtrip parse and serialize for Nix
derivations. This covers a bug we discovered in ef54f5d which broke this
roundtrip.

Change-Id: I72d140334b5f24f79e82e34f98609c695dbfbf93
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1582
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 20:00:08 +00:00
William Carroll
c2419cd912 Support updating trips from the client
Edit existing trips.
2020-08-02 20:56:29 +01:00
William Carroll
239ff24c95 Use ORDER BY to sort the response for GET /trips
SQL is quite useful.
2020-08-02 19:50:28 +01:00
William Carroll
0cb9642a8a Use valid dates for Trips.endDate in trips.csv
TL;DR: My trips.csv had invalid dates for the endDate column. "2020-15-30" is an
"invalid date" (according to FromField instance for Calendar.Day) bc 15 is not a
valid month (i.e. [1,12]).

@dmjio helped me take a look. When we poked around the SQL, we discovered:

```sql
SELECT endDate FROM TRIPS;       -- shows three records
SELECT date(endDate) FROM TRIPS; -- shows two records
```
2020-08-02 19:44:23 +01:00
William Carroll
1d5cf2e4b5 Support Admins inviting users from the client
The title says it all.
2020-08-02 18:02:15 +01:00
William Carroll
a3d783025a Add friendlier and more accurate instructions in invitation email
Copy Example:

To accept the invitation:
  POST /accept-invitation username=<username>
    password=<password> email=you@domain.tld
    secret=8c6b5719-7b1c-471c-bdea-7807b6c0866c
2020-08-02 18:00:29 +01:00
William Carroll
2632dc10fd Ensure /accept-invitation is POST and not GET
Debugged this bug!
2020-08-02 18:00:05 +01:00
William Carroll
90d1451895 Render "<count> days until" for upcoming trips
Per the assignment spec.
2020-08-02 17:45:34 +01:00
William Carroll
e9e84f6a08 Support POST /accept-invitation
Allow users to accept invitations that we email to them.

TL;DR:
- I learned how to write FromHttpApiData instances, which allows me to
  parse/validate data at the edges of my application; this substantially cleans
  up my Handler code.
2020-08-02 16:30:28 +01:00
William Carroll
25334080b9 Support POST /invite
Allow Admin accounts to invite users to the application.
2020-08-02 16:07:35 +01:00
William Carroll
fe609bbe58 Support CRUDing records on Admin page
TL;DR:
- Prefer the more precise verbiage, "Accounts", to "Users"
- Add username field to Trip instead of relying on session.username
- Ensure that decodeRole can JD.fail for invalid inputs
2020-08-02 15:15:01 +01:00
William Carroll
81c3db20d4 Allow managers to CRUD all account types (not just admins)
Per the assignment's instructions.
2020-08-02 14:31:00 +01:00
William Carroll
803db7a5b2 Support printing user's itinerary
- Define print.css with media=print type (note: could've been handled with
  @media queries)
- Define printPage port to interop with window.print() JS function
- Support UI.wrapNoPrint to wrap components with a the no-print CSS
2020-08-02 14:23:38 +01:00
William Carroll
699892883c Support deleting trips from the client
TL;DR:
- Ensure Types.TripPK in Types.hs uses Calendar.Day for startDate
- Prefer verbiage "GotCreateTrip" to "CreatedTrip"
- Extend Utils.deleteWithCredentials to accept a body parameter
- Support a delete button in the UI
2020-08-02 11:16:24 +01:00
William Carroll
d5bc6f963d Protect views from a State with an empty Session
This should simplify UserHome among other views.
2020-08-02 11:13:54 +01:00
William Carroll
57b6472e2f Define defaults for init in State.elm
Problem: When I'm working on a feature, I save my code, and elm-live reloads the
browser. This is usually good, except that the application state is
reinitialized, which usually means that the view changes.

I defined two state configurations, and I expect to define more:
- prod: The initial state for the application
- userHome: The state I'd like to use when developing a feature for the UserHome
  page.

Idea: For more ad-hoc configurations, I can store the application state in
LocalStorage and restore it in between page refreshes.
2020-08-02 10:51:26 +01:00
William Carroll
ac9629cad0 Assign fixed width to error banners
This makes the banners easier to center horizontally.
2020-08-02 10:33:42 +01:00
Griffin Smith
7aebba7531 feat(web/panettone): Add direct anchor links to comments
Fixes: #31
Change-Id: I5a8228229eb2b68bdfc5addd305ab055443aa5a6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1581
Reviewed-by: lukegb <lukegb@tvl.fyi>
Tested-by: BuildkiteCI
2020-08-02 02:57:41 +00:00
Vincent Ambo
688d4c6be3 refactor(paroxysm): Move lazy_static regex definitions to the top
Change-Id: If04cc7ee72230f6b5163d33ef683bcb90bd9bc26
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1554
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 02:16:24 +00:00
Vincent Ambo
f9840fe2d0 chore(paroxysm): Bump minimum versions of some dependencies
Most of these had already been updated due to how dep constraints are
solved, but it can't hurt to make it explicit.

Change-Id: I1928f5e43a360505e9205f98d007674f6eaf9830
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1553
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 02:16:24 +00:00
Vincent Ambo
88f69da3ce chore(paroxysm): Remove no-op minor version constraints
... these don't do anything anyways.

Change-Id: Id0b21443eda10361bfb384e876bbbf8fa2e97e15
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1551
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 02:16:24 +00:00
Vincent Ambo
e663ca4128 refactor(paroxysm): Use derive macros from serde crate
serde_derive is deprecated, the macros have moved behind a
feature-gate in serde itself.

Change-Id: Ib42e7463a81006e23a4fe8a0e48f494610dc8e4c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1550
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 02:16:24 +00:00
Vincent Ambo
194c498d53 refactor(paroxysm): Explicitly macro imports, no more 'extern crate'
Removes all but one occurence of `extern crate`, to conform with Rust
2018.

The last one is necessary because Diesel is a giant jungle of
complicated macros re-exported from private crates, and the current
version makes it hard to import those directly instead.

Change-Id: Id14165a456d5c3ce6f7a4e0222c611640113eb11
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1549
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 02:16:24 +00:00
Vincent Ambo
660a02947f chore(paroxysm): Bump Cargo dependencies within constraint
This is just a `cargo update` call.

Change-Id: I3b780cd76d97bf69b793a4c573eb3b9c1d59f88b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1548
Tested-by: BuildkiteCI
Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-02 02:16:24 +00:00
Griffin Smith
e0d25449e3 fix(3p/nix): Don't reuse ClientContext
It turns out these aren't supposed to be reused after the first request
- reusing it was causing things to blow up.

Change-Id: I935f1ee82ed4e7f26528ae105c8fa2501fa81b97
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1559
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Tested-by: BuildkiteCI
2020-08-02 02:12:14 +00:00