feat(*): init Rust port #1

Merged
raito merged 1 commit from rust into main 2024-08-31 17:30:39 +00:00
Owner

This is a Rust port of the original Perl script, legacy cruft is removed
and it focuses on a modern Hydra deployment.

Nonetheless, it knows how to perform migrations based on the channel
versions.

TODO:

  • read configuration file
  • add support for S3 secrets
  • add proper logging facilities
  • add rust module to parse hydra API stuff
  • implement plan CLI to show an action plan à la Terraform
  • implement actual logic to execute the action plan (download via Hydra API, etc.)
  • implement HTML templating generation

Next steps:

  • write hash files in the bucket as well, make it configurable

  • fix the "write compressed store path" logic

  • replace log by tracing properly and get observability paradise?

  • publish the new HTML pages

short term:

  • [ ] add support for SSH private key secret
  • validate the NAR
  • [ ] determine if a nixpkgs clone is available, crash if not
  • [ ] implement the anti rollback preflight check
  • advance the channels via git push

long term TODO:

  • trait-based refactor for the action execution
  • reduce the split between streaming & non streaming
  • separate library code from binary code (anyhow vs. thiserror)
  • interactive confirmations
  • redirections
  • NAR LRU cache
  • migration system for the DSL
  • debuginfo
  • SQLite databases for program info, etc.
  • upload local plans
  • fix code quality and error handling

Signed-off-by: Raito Bezarius masterancpp@gmail.com

This is a Rust port of the original Perl script, legacy cruft is removed and it focuses on a modern Hydra deployment. Nonetheless, it knows how to perform migrations based on the channel versions. TODO: - [x] read configuration file - [x] add support for S3 secrets - [x] add proper logging facilities - [x] add rust module to parse hydra API stuff - [x] implement plan CLI to show an action plan à la Terraform - [x] implement actual logic to execute the action plan (download via Hydra API, etc.) - [x] implement HTML templating generation Next steps: - [x] write hash files in the bucket as well, make it configurable - [x] fix the "write compressed store path" logic - [x] replace `log` by `tracing` properly and get observability paradise? - [x] publish the new HTML pages short term: - [ ] add support for SSH private key secret - [ ] validate the NAR - [ ] determine if a nixpkgs clone is available, crash if not - [ ] implement the anti rollback preflight check - [ ] advance the channels via git push long term TODO: - [ ] trait-based refactor for the action execution - [ ] reduce the split between streaming & non streaming - [ ] separate library code from binary code (anyhow vs. thiserror) - [ ] interactive confirmations - [ ] redirections - [ ] NAR LRU cache - [ ] migration system for the DSL - [ ] debuginfo - [ ] SQLite databases for program info, etc. - [ ] upload local plans - [ ] fix code quality and error handling Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
raito added 1 commit 2024-08-02 15:50:21 +00:00
This is a Rust port of the original Perl script, legacy cruft is removed
and it focuses on a modern Hydra deployment.

Nonetheless, it knows how to perform migrations based on the channel
versions.

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
raito force-pushed rust from 8288bad70e to 734a2d8def 2024-08-02 19:07:12 +00:00 Compare
raito force-pushed rust from 734a2d8def to a84ca72460 2024-08-07 17:05:18 +00:00 Compare
raito force-pushed rust from a84ca72460 to bcbe4cd6ec 2024-08-07 17:52:53 +00:00 Compare
raito force-pushed rust from bcbe4cd6ec to 3cc9a5696e 2024-08-07 18:10:58 +00:00 Compare
raito force-pushed rust from 3cc9a5696e to 2088f62eac 2024-08-07 22:33:55 +00:00 Compare
raito force-pushed rust from 2088f62eac to b2237393c8 2024-08-07 23:12:51 +00:00 Compare
raito force-pushed rust from b2237393c8 to 93ac2c9864 2024-08-07 23:36:50 +00:00 Compare
raito force-pushed rust from 93ac2c9864 to 3d1d01f783 2024-08-10 16:01:03 +00:00 Compare
raito force-pushed rust from 3d1d01f783 to 1cd4a662c0 2024-08-28 14:38:39 +00:00 Compare
raito force-pushed rust from 1cd4a662c0 to 65358e64c0 2024-08-30 18:45:23 +00:00 Compare
raito force-pushed rust from 65358e64c0 to d38655e606 2024-08-30 23:17:46 +00:00 Compare
raito force-pushed rust from d38655e606 to 0ce7cf27a1 2024-08-30 23:58:52 +00:00 Compare
raito force-pushed rust from 0ce7cf27a1 to 414f582fc4 2024-08-31 00:51:43 +00:00 Compare
raito force-pushed rust from 414f582fc4 to 14e2dd412e 2024-08-31 14:48:19 +00:00 Compare
raito force-pushed rust from 14e2dd412e to d6e2bc96a5 2024-08-31 14:58:57 +00:00 Compare
raito force-pushed rust from d6e2bc96a5 to 1a33736c85 2024-08-31 15:25:11 +00:00 Compare
raito force-pushed rust from 1a33736c85 to be74ad5446 2024-08-31 15:33:16 +00:00 Compare
raito force-pushed rust from be74ad5446 to eba911d359 2024-08-31 16:06:19 +00:00 Compare
raito force-pushed rust from eba911d359 to 542a3ae836 2024-08-31 16:07:05 +00:00 Compare
raito changed title from WIP: feat(*): init Rust port to feat(*): init Rust port 2024-08-31 17:30:14 +00:00
raito merged commit cb5a2a2b07 into main 2024-08-31 17:30:39 +00:00
raito deleted branch rust 2024-08-31 17:30:39 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: the-distro/channel-scripts#1
No description provided.