mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-21 23:11:17 -03:00
This is part of the larger effort of splitting up fish's huge main crate to improve incremental build speed. We could extract more logic from `src/wutil/gettext.rs` into the new crate, but this would require putting wide-string handling into that crate, which I'm not sure we want. Doing so would have the advantage that crates which don't depend on fish's main crate (i.e. all crates other than fish's main crate itself and the binary crates built on top of it) could then localize messages as well. This will be less relevant if we replace gettext with Fluent for messages originating from the Rust sources. Closes #12108
192 lines
5.6 KiB
TOML
192 lines
5.6 KiB
TOML
[workspace]
|
|
members = ["crates/*"]
|
|
|
|
[workspace.package]
|
|
# To build revisions that use Corrosion (those before 2024-01), use CMake 3.19, Rustc 1.78 and Rustup 1.27.
|
|
rust-version = "1.85"
|
|
edition = "2024"
|
|
repository = "https://github.com/fish-shell/fish-shell"
|
|
# see doc_src/license.rst for details
|
|
# don't forget to update COPYING and debian/copyright too
|
|
license = "GPL-2.0-only AND LGPL-2.0-or-later AND MIT AND PSF-2.0"
|
|
|
|
[workspace.dependencies]
|
|
bitflags = "2.5.0"
|
|
cc = "1.0.94"
|
|
cfg-if = "1.0.3"
|
|
errno = "0.3.0"
|
|
fish-build-helper = { path = "crates/build-helper" }
|
|
fish-build-man-pages = { path = "crates/build-man-pages" }
|
|
fish-gettext = { path = "crates/gettext" }
|
|
fish-gettext-extraction = { path = "crates/gettext-extraction" }
|
|
fish-gettext-maps = { path = "crates/gettext-maps" }
|
|
fish-gettext-mo-file-parser = { path = "crates/gettext-mo-file-parser" }
|
|
fish-printf = { path = "crates/printf", features = ["widestring"] }
|
|
fish-tempfile = { path = "crates/tempfile" }
|
|
libc = "0.2.177"
|
|
# lru pulls in hashbrown by default, which uses a faster (though less DoS resistant) hashing algo.
|
|
# disabling default features uses the stdlib instead, but it doubles the time to rewrite the history
|
|
# files as of 22 April 2024.
|
|
lru = "0.13.0"
|
|
nix = { version = "0.30.1", default-features = false, features = [
|
|
"event",
|
|
"inotify",
|
|
"resource",
|
|
"fs",
|
|
] }
|
|
num-traits = "0.2.19"
|
|
once_cell = "1.19.0"
|
|
pcre2 = { git = "https://github.com/fish-shell/rust-pcre2", tag = "0.2.9-utf32", default-features = false, features = [
|
|
"utf32",
|
|
] }
|
|
phf = { version = "0.12", default-features = false }
|
|
phf_codegen = { version = "0.12" }
|
|
portable-atomic = { version = "1", default-features = false, features = [
|
|
"fallback",
|
|
] }
|
|
proc-macro2 = "1.0"
|
|
rand = { version = "0.9.2", default-features = false, features = [
|
|
"small_rng",
|
|
"thread_rng",
|
|
] }
|
|
rsconf = "0.2.2"
|
|
rust-embed = { version = "8.9.0", features = [
|
|
"deterministic-timestamps",
|
|
"include-exclude",
|
|
"interpolate-folder-path",
|
|
] }
|
|
serial_test = { version = "3", default-features = false }
|
|
# We need 0.9.0 specifically for some crash fixes.
|
|
terminfo = "0.9.0"
|
|
widestring = "1.2.0"
|
|
unicode-segmentation = "1.12.0"
|
|
unicode-width = "0.2.0"
|
|
unix_path = "1.0.1"
|
|
xterm-color = "1.0.1"
|
|
|
|
[profile.release]
|
|
overflow-checks = true
|
|
lto = true
|
|
|
|
[profile.release-with-debug]
|
|
inherits = "release"
|
|
debug = true
|
|
|
|
[package]
|
|
name = "fish"
|
|
version = "4.2.1-snapshot"
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
default-run = "fish"
|
|
license.workspace = true
|
|
homepage = "https://fishshell.com"
|
|
readme = "README.rst"
|
|
|
|
[dependencies]
|
|
bitflags.workspace = true
|
|
cfg-if.workspace = true
|
|
errno.workspace = true
|
|
fish-build-helper.workspace = true
|
|
fish-build-man-pages = { workspace = true, optional = true }
|
|
fish-gettext = { workspace = true, optional = true }
|
|
fish-gettext-extraction = { workspace = true, optional = true }
|
|
fish-printf.workspace = true
|
|
fish-tempfile.workspace = true
|
|
libc.workspace = true
|
|
lru.workspace = true
|
|
macro_rules_attribute = "0.2.2"
|
|
nix.workspace = true
|
|
num-traits.workspace = true
|
|
once_cell.workspace = true
|
|
pcre2.workspace = true
|
|
rand.workspace = true
|
|
terminfo.workspace = true
|
|
xterm-color.workspace = true
|
|
widestring.workspace = true
|
|
|
|
[target.'cfg(not(target_has_atomic = "64"))'.dependencies]
|
|
portable-atomic.workspace = true
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
rust-embed = { workspace = true, features = [
|
|
"deterministic-timestamps",
|
|
"debug-embed",
|
|
"include-exclude",
|
|
"interpolate-folder-path",
|
|
] }
|
|
[target.'cfg(not(windows))'.dependencies]
|
|
rust-embed = { workspace = true, features = [
|
|
"deterministic-timestamps",
|
|
"include-exclude",
|
|
"interpolate-folder-path",
|
|
] }
|
|
|
|
[dev-dependencies]
|
|
serial_test.workspace = true
|
|
|
|
[build-dependencies]
|
|
cc.workspace = true
|
|
fish-build-helper.workspace = true
|
|
fish-gettext-mo-file-parser.workspace = true
|
|
phf_codegen = { workspace = true, optional = true }
|
|
rsconf.workspace = true
|
|
|
|
[target.'cfg(windows)'.build-dependencies]
|
|
unix_path.workspace = true
|
|
|
|
[lib]
|
|
crate-type = ["rlib"]
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "fish"
|
|
path = "src/bin/fish.rs"
|
|
|
|
[[bin]]
|
|
name = "fish_indent"
|
|
path = "src/bin/fish_indent.rs"
|
|
|
|
[[bin]]
|
|
name = "fish_key_reader"
|
|
path = "src/bin/fish_key_reader.rs"
|
|
|
|
[features]
|
|
default = ["embed-manpages", "localize-messages"]
|
|
benchmark = []
|
|
embed-manpages = ["dep:fish-build-man-pages"]
|
|
# Enable gettext localization at runtime. Requires the `msgfmt` tool to generate catalog data at
|
|
# build time.
|
|
localize-messages = ["dep:fish-gettext"]
|
|
# This feature is used to enable extracting messages from the source code for localization.
|
|
# It only needs to be enabled if updating these messages (and the corresponding PO files) is
|
|
# desired. This happens when running tests via `build_tools/check.sh` and when calling
|
|
# `build_tools/update_translations.fish`, so there should not be a need to enable it manually.
|
|
gettext-extract = ["dep:fish-gettext-extraction"]
|
|
|
|
# The following features are auto-detected by the build-script and should not be enabled manually.
|
|
asan = []
|
|
tsan = []
|
|
|
|
[workspace.lints]
|
|
rust.non_camel_case_types = "allow"
|
|
rust.non_upper_case_globals = "allow"
|
|
rust.unknown_lints = "allow"
|
|
rust.unstable_name_collisions = "allow"
|
|
rustdoc.private_intra_doc_links = "allow"
|
|
clippy.len_without_is_empty = "allow" # we're not a library crate
|
|
clippy.let_and_return = "allow"
|
|
clippy.manual_range_contains = "allow"
|
|
clippy.needless_lifetimes = "allow"
|
|
clippy.needless_return = "allow"
|
|
clippy.new_without_default = "allow"
|
|
clippy.option_map_unit_fn = "allow"
|
|
|
|
# We do not want to use the e?print(ln)?! macros.
|
|
# These lints flag their use.
|
|
# In the future, they might change to flag other methods of printing.
|
|
clippy.print_stdout = "deny"
|
|
clippy.print_stderr = "deny"
|
|
|
|
[lints]
|
|
workspace = true
|