git_simple_encrypt/
lib.rs1#![warn(clippy::nursery, clippy::cargo, clippy::pedantic)]
2#![allow(clippy::missing_errors_doc)]
3#![allow(clippy::multiple_crate_versions)]
4
5mod cli;
6mod config;
7pub mod crypt;
8mod repo;
9mod utils;
10
11use anyhow::Result;
12use assert2::assert;
13use crypt::{decrypt_repo, encrypt_repo};
14use repo::Repo;
15
16pub use crate::{
17 cli::{Cli, SetField, SubCommand},
18 crypt::FileHeader,
19};
20
21#[allow(clippy::missing_panics_doc, clippy::missing_errors_doc)]
22pub fn run(cli: Cli) -> Result<()> {
23 assert!(cli.repo.is_absolute(), "repo path must be absolute");
24 let repo = Repo::open(&cli.repo)?;
25 let repo = Box::leak(Box::new(repo));
26 match cli.command {
27 SubCommand::Encrypt { paths } => encrypt_repo(repo, paths)?,
28 SubCommand::Decrypt { paths } => decrypt_repo(repo, paths)?,
29 SubCommand::Add { paths } => repo.conf.add_paths_to_crypt_list(&paths)?,
30 SubCommand::Set { field } => field.set(repo)?,
31 SubCommand::Pwd => repo.set_key_interactive()?,
32 }
33 anyhow::Ok::<()>(())
34}