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