git-crypt 0.1.4

A Rust implementation of git-crypt for transparent encryption of files in a git repository
Documentation
[package]
name = "git-crypt"
version = "0.1.4"
edition = "2021"
authors = ["AprilNEA"]
description = "A Rust implementation of git-crypt for transparent encryption of files in a git repository"
license = "MIT OR Apache-2.0"
repository = "https://github.com/AprilNEA/git-crypt-rs"
homepage = "https://github.com/AprilNEA/git-crypt-rs"
documentation = "https://docs.rs/git-crypt"
readme = "README.md"
keywords = ["git", "encryption", "aes", "security", "cryptography"]
categories = ["command-line-utilities", "cryptography"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = ["gpg"]
gpg = ["dep:pgp"]
age = ["dep:age"]
ssh = ["age", "dep:rpassword"]
sync-s3 = ["dep:s3", "dep:serde", "dep:toml", "dep:config"]

[dependencies]
# CLI
clap = { version = "4.5", features = ["derive"] }

# Cryptography
aes-gcm = "0.10"
rand = "0.8"
sha2 = "0.10"
hmac = "0.12"
hkdf = "0.12"

# GPG (optional, powered by rPGP)
pgp = { version = "0.17", optional = true }

# age/rage recipients
age = { package = "age", version = "0.11.1", default-features = false, features = ["ssh"], optional = true }
rpassword = { version = "7.3", optional = true }
s3 = { package = "rust-s3", version = "0.36", default-features = false, features = ["blocking", "tokio-rustls-tls"], optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
toml = { version = "0.8", optional = true }
config = { version = "0.14", default-features = false, features = ["toml"], optional = true }

# Git operations
git2 = "0.19"

# Error handling and utilities
anyhow = "1.0"
thiserror = "1.0"
hex = "0.4"
base64 = "0.22"

# I/O
dirs = "5.0"

[[bin]]
name = "git-crypt"
path = "src/main.rs"

[dev-dependencies]
tempfile = "3.13"
assert_cmd = "2.0"
predicates = "3.1"
nanoid = "0.4"
serial_test = "3.2"