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>
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 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.