[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"

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"
tracing = "0.1"
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"