ffizer 2.8.0

ffizer is a files and folders initializer / generator. It creates or updates any kind (or part) of project from template(s)
Documentation
[package]
name = "ffizer"
version = "2.8.0"
authors = ["David Bernard"]
description = """ffizer is a files and folders initializer / generator.
It creates or updates any kind (or part) of project from template(s)"""
readme = "README.md"
license = "CC0-1.0"
keywords = ["project", "generator", "template", "skeleton"]
categories = ["command-line-utilities", "development-tools", "template-engine"]
repository = "https://github.com/ffizer/ffizer"
homepage = "https://ffizer.github.io/ffizer/book/"
exclude = ["/.github/**", "/docs/**", "/scripts/**", ".gitignore", "/tests/**"]
edition = "2021"

[dependencies]
clap = { version = "4.1", features = ["derive"] }
console = "0.15.2"
dialoguer = "0.10.2"
difference = "2.0.0"
directories = "4.0"
git2 = { version = "0.16", optional = true }
git2_credentials = { version = "0.11", optional = true }
globset = "0.4.9"
handlebars = "4.3"
handlebars_misc_helpers = { version = "0.13", features = [
    "string",
    "http_reqwest",
    "json",
    "jsonnet",
], default-features = false }
human-panic = { version = "1.0.3", optional = true }
indicatif = "0.17.0"
lazy_static = "1.4.0"
md5 = "0.7.0"
regex = "1.7.0"
run_script = "0.10.0"
schemars = "0.8"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.89"
serde_plain = "1.0"
serde_yaml = "0.9"
tracing = "0.1"
tracing-subscriber = { version = "0.3", optional = true, features = [
    "registry",
    "fmt",
    "ansi",
    "env-filter",
] }
tracing-error = "0.2"
tempfile = "3.4.0"
thiserror = "1.0"
walkdir = "2.3.2"

[dev-dependencies]
assert_cmd = "2.0.7"
# rexpect = "0.3"
spectral = "0.6.0"
test-generator = "0.3.0"
predicates = "2.1.1"
pretty_assertions = "1.3.0"
tracing-subscriber = { version = "0.3", features = ["fmt"] }

[[bin]]
name = "ffizer"
path = "src/main.rs"
doc = false
# HACK to define dependencies only for cli
# see https://github.com/rust-lang/cargo/issues/1982
required-features = ["cli"]

[target.'cfg(all(unix, not(target_os = "redox")))'.dependencies]
libc = "0.2"
openssl = { version = "0.10", features = ["vendored"] }
# self_update = { version = "0.12.0", optional = true, features = ["archive-zip", "compression-zip-deflate"]}
self_update = { version = "0.36.0", optional = true, features = [
    "archive-tar",
    "compression-flate2",
] }

[target.'cfg(windows)'.dependencies]
winapi = "0.3"
self_update = { version = "0.36.0", optional = true, features = [
    "archive-zip",
] }

# see https://github.com/johnthagen/min-sized-rust
[profile.release]
# Enables link time optimizations which tells the compiler to optimize code generation at link time and can result in dropping code that is not used.
lto = true
# Stops Rust generating a helpful stack trace and panic message when it panics. With this optimization it will be much harder to figure out what went wrong when the program crashes.
panic = 'abort'
# Tells the compiler to optimize for minimal code size. This will make the code less performant but it will take up less space.
opt-level = 'z'
# Tells the compiler to use only one code generator instead of running several in parallel. Disabling parallel code generation makes the compilation slower but makes all optimizations possible.
codegen-units = 1

[features]
default = ["cli"]
test_remote = []                                                               # feature has no explicit dependencies
cli = ["git2", "dep:self_update", "dep:human-panic", "dep:tracing-subscriber"]
git2 = ["dep:git2", "dep:git2_credentials"]

[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/{ version }/{ name }_{ version }-{ target }{ archive-suffix }"
bin-dir = "{ bin }{ binary-ext }"

[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-fmt = "zip"

[package.metadata.release]
pre-release-commit-message = ":rocket: (cargo-release) version {{version}}"
tag-prefix = ""
tag-name = "{{prefix}}{{version}}"
tag-message = ":bookmark: {{version}}"