[package]
name = "libpijul"
description = "Core library of Pijul, a distributed version control system based on a sound theory of collaborative work."
version = "1.0.0-beta.3"

repository = "https://nest.pijul.com/pijul/libpijul"
documentation = "https://docs.rs/libpijul"
authors = ["Pierre-Étienne Meunier <pe@pijul.org>"]
edition = "2018"
license = "GPL-2.0-or-later"
include = [
"Cargo.toml",
"src/apply.rs",
"src/apply/edge.rs",
"src/apply/vertex.rs",
"src/missing_context.rs",
"src/vector2.rs",
"src/path.rs",
"src/key.rs",
"src/chardetng/mod.rs",
"src/chardetng/data.rs",
"src/chardetng/tld.rs",
"src/working_copy/filesystem.rs",
"src/working_copy/mod.rs",
"src/working_copy/memory.rs",
"src/unrecord/mod.rs",
"src/unrecord/working_copy.rs",
"src/record.rs",
"src/change.rs",
"src/change/change_file.rs",
"src/change/text_changes.rs",
"src/change/noenc.rs",
"src/change/parse.rs",
"src/change/printable.rs",
"src/alive/tarjan.rs",
"src/alive/debug.rs",
"src/alive/retrieve.rs",
"src/alive/dfs.rs",
"src/alive/mod.rs",
"src/alive/output.rs",
"src/fs.rs",
"src/vertex_buffer.rs",
"src/changestore/filesystem.rs",
"src/changestore/mod.rs",
"src/changestore/memory.rs",
"src/small_string.rs",
"src/pristine/path_id.rs",
"src/pristine/block.rs",
"src/pristine/edge.rs",
"src/pristine/merkle.rs",
"src/pristine/patch_id.rs",
"src/pristine/inode_metadata.rs",
"src/pristine/inode.rs",
"src/pristine/sanakirja.rs",
"src/pristine/mod.rs",
"src/pristine/vertex.rs",
"src/pristine/hash.rs",
"src/pristine/change_id.rs",
"src/pristine/inode_vertex.rs",
"src/find_alive.rs",
"src/tag.rs",
"src/tag/txn.rs",
"src/text_encoding.rs",
"src/tests/performance.rs",
"src/tests/file_conflicts.rs",
"src/tests/filesystem.rs",
"src/tests/missing_context.rs",
"src/tests/conflict.rs",
"src/tests/clone.rs",
"src/tests/change.rs",
"src/tests/unrecord.rs",
"src/tests/partial.rs",
"src/tests/rm_file.rs",
"src/tests/mod.rs",
"src/tests/add_file.rs",
"src/tests/patch.rs",
"src/tests/text.rs",
"src/tests/diff.rs",
"src/output/mod.rs",
"src/output/archive.rs",
"src/output/output.rs",
"src/diff/replace.rs",
"src/diff/split.rs",
"src/diff/diff.rs",
"src/diff/mod.rs",
"src/diff/delete.rs",
"src/diff/vertex_buffer.rs",
"src/diff/bin.rs",
"src/lib.rs"
]

[features]
ondisk-repos = [ "mmap", "zstd", "ignore", "canonical-path", "lru-cache", "tempfile", "path-slash" ]
mmap = [ "sanakirja/mmap" ]
zstd = [ "zstd-seekable" ]
text-changes = [ "regex" ]
dump = [ "tokio" ]
default = [ "ondisk-repos", "text-changes", "dump" ]
tarball = [ "tar", "flate2" ]

[dependencies]
sanakirja = { version = "1.2.16", features = [ "crc32" ] }
byteorder = "1.4"
log = "0.4"
serde = "1.0"
serde_derive = "1.0"
bitflags = "1.3"
thiserror = "1.0"
blake3 = "1.3"
chrono = { version = "0.4", features = ["serde"] }
pijul-macros = { path = "../pijul-macros", version = "0.5.0" }
bincode = "1.3"
data-encoding = "2.3"
diffs = "0.4"
toml = "0.5"
serde_json = "1.0"
lazy_static = "1.4"
twox-hash = "1.6"
crossbeam-deque = "0.8"
crossbeam-utils = "0.8"
nom = "7"

zstd-seekable = { version = "0.1.7", optional = true }
cfg-if = "1.0"
memchr = "2.4"

encoding_rs = "0.8.30"
regex = { version = "1.5", optional = true }
tokio = { version = "1.15", optional = true, features = ["io-util"] }
curve25519-dalek = { version = "3", features = [ "serde" ] }
ed25519-dalek = { version = "1.0", features = [ "serde" ] }
ignore = { version = "0.4", optional = true }
tar = { version = "0.4", optional = true }
flate2 = { version = "1.0", optional = true }
canonical-path = { version = "2.0", optional = true }
lru-cache = { version = "0.1", optional = true }
tempfile = { version = "3.1", optional = true }
path-slash = { version = "0.1", optional = true }
pbkdf2 = { version = "0.9", default-features = false }
aes = { version = "0.7", features = [ "ctr" ] }
generic-array = "0.14"
hmac = "0.11"
sha2 = "0.9"
rand = "0.8"
rand_core = { version = "0.6", features = ["getrandom"] }
bs58 = "0.4"
adler32 = "1.2"

parking_lot = "0.11"

[dev-dependencies]
env_logger = "0.8"
anyhow = "1.0"
detone = "1.0"
rand = "0.8"
rand_chacha = "0.3"
quickcheck = "1"
quickcheck_macros = "1"