-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
218 lines (196 loc) · 7.47 KB
/
Copy pathCargo.toml
File metadata and controls
218 lines (196 loc) · 7.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
[package]
name = "nyne-bin"
version = "0.1.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
publish.workspace = true
[[bin]]
name = "nyne"
path = "src/main.rs"
[dependencies]
nyne.workspace = true
nyne-cache.workspace = true
nyne-claude.workspace = true
nyne-diff.workspace = true
nyne-companion.workspace = true
nyne-fs.workspace = true
nyne-git.workspace = true
nyne-source.workspace = true
nyne-analysis.workspace = true
nyne-lsp.workspace = true
nyne-nyne.workspace = true
nyne-slice.workspace = true
nyne-todo.workspace = true
nyne-visibility.workspace = true
clap.workspace = true
color-eyre.workspace = true
tracing-subscriber.workspace = true
[lints]
workspace = true
[workspace]
resolver = "3"
members = ["nyne", "plugins/*", "tests/integration"]
default-members = [".", "nyne", "plugins/*"]
[workspace.package]
edition = "2024"
rust-version = "1.93"
license = "MIT"
publish = false
[workspace.dependencies]
# Internal crates
nyne = { path = "nyne" }
nyne-git = { package = "nyne-plugin-git", path = "plugins/git" }
nyne-claude = { package = "nyne-plugin-claude", path = "plugins/claude" }
nyne-source = { package = "nyne-plugin-source", path = "plugins/source" }
nyne-lsp = { package = "nyne-plugin-lsp", path = "plugins/lsp" }
nyne-analysis = { package = "nyne-plugin-analysis", path = "plugins/analysis" }
nyne-todo = { package = "nyne-plugin-todo", path = "plugins/todo" }
nyne-cache = { package = "nyne-plugin-cache", path = "plugins/cache" }
nyne-companion = { package = "nyne-plugin-companion", path = "plugins/companion" }
nyne-diff = { package = "nyne-plugin-diff", path = "plugins/diff" }
nyne-fs = { package = "nyne-plugin-fs", path = "plugins/fs" }
nyne-slice = { package = "nyne-plugin-slice", path = "plugins/slice" }
nyne-nyne = { package = "nyne-plugin-nyne", path = "plugins/nyne" }
nyne-visibility = { package = "nyne-plugin-visibility", path = "plugins/visibility" }
# Core
anymap2 = "0.13.0"
aho-corasick = { version = "1.1.4", features = ["logging"] }
base64 = "0.22.1"
bitflags = "2.11"
clap = { version = "4", features = ["derive"] }
color-eyre = "0.6"
comfy-table = "7.2.2"
console = "0.16.3"
convert_case = "0.11.0"
crop = { version = "0.4.3", features = ["serde", "utf16-metric"] }
crossbeam-channel = "0.5.15"
directories = "6"
filetime = "0.2.27"
fuser = "0.17"
garde = { version = "0.22", features = ["derive", "serde"] }
git2 = { version = "0.20", default-features = false }
humantime = "2"
humantime-serde = "1"
ignore = { version = "0.4.25", features = ["simd-accel"] }
indicatif = "0.18.4"
jiff = { version = "0.2", features = ["serde"] }
libc = "0.2"
linkme = "0.3.36"
lru = "0.17.0"
lsp-types = "0.97.0"
minijinja = { version = "2.19.0", features = ["builtins"] }
notify = "8.2.0"
owo-colors = "4.3.0"
palette = { version = "0.7.6", features = ["std"] }
parking_lot = "0.12.5"
paste = "1"
petgraph = "0.8.3"
rustix = { version = "1.1.4", features = ["net"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
signal-hook = "0.4.4"
similar = "3.1.0"
smallvec = "1.15.1"
slab = "0.4.12"
strum = { version = "0.28", features = ["derive"] }
thiserror = "2.0.18"
toml = "1.1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tree-sitter = "0.26"
tree-sitter-fennel = { path = "plugins/source/vendor/tree-sitter-fennel" }
tree-sitter-jinja = "0.12.0"
tree-sitter-md = "0.5.3"
tree-sitter-nix = "0.3.0"
tree-sitter-python = "0.25.0"
tree-sitter-rust = "0.24"
tree-sitter-toml-ng = "0.7.0"
tree-sitter-typescript = "0.23.2"
url = "2.5.8"
# Testing
assert_cmd = "2"
assert_fs = "1"
criterion = { version = "0.8.2", features = ["html_reports"] }
insta = { version = "1", features = ["json", "filters"] }
predicates = "3"
proptest = "1.11.0"
rstest = "0.26.1"
serial_test = "3"
similar-asserts = "2"
tempfile = "3"
[profile.release]
lto = "thin"
strip = "symbols"
[workspace.lints.rust]
unsafe_code = "deny"
[workspace.lints.clippy]
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
# Noisy nursery lints — false positive prone
option_if_let_else = "allow"
significant_drop_tightening = "allow"
fallible_impl_from = "allow" # conflicts with idiomatic From impls
# Noisy pedantic lints — valid but not worth fighting
module_name_repetitions = "allow" # task::TaskError is fine
must_use_candidate = "allow" # too noisy on every fn returning a value
missing_errors_doc = "allow"
missing_panics_doc = "allow"
missing_docs_in_private_items = "allow" # if you ever enable this via rustdoc
# Safety & correctness — hard errors
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"
todo = "deny"
unimplemented = "deny"
dbg_macro = "deny"
indexing_slicing = "deny" # forces .get() over [i]
as_conversions = "allow" # too noisy for FUSE code
cast_possible_truncation = "deny" # u64 as u32 — data loss
cast_possible_wrap = "deny" # u64 as i64 — sign issues
cast_sign_loss = "deny" # i64 as u64 — negative → huge
cast_precision_loss = "warn" # f64 as f32
# Clone / copy discipline
clone_on_ref_ptr = "warn" # Arc::clone(&x) not x.clone()
redundant_clone = "warn"
needless_pass_by_value = "warn" # fn f(s: String) where &str works
implicit_clone = "warn" # hidden .to_owned() on owned types
large_types_passed_by_value = "warn" # big structs should be &
# Ownership & borrowing discipline
needless_borrow = "warn" # &String where String derefs to &str
needless_pass_by_ref_mut = "warn" # &mut when only & is needed
ref_option_ref = "warn" # &Option<&T> is usually a smell
trivially_copy_pass_by_ref = "warn" # &u64 where u64 (Copy) is fine
# String handling consistency
str_to_string = "warn" # .to_owned() over .to_string() for &str
string_add = "warn" # String + &str — prefer format! or push_str
string_lit_as_bytes = "warn" # "foo".as_bytes() → b"foo"
# Control flow — enforce early return style
if_then_some_else_none = "warn" # use .then(|| x)
manual_let_else = "warn" # use let-else over if-let + return
match_bool = "warn" # use if/else not match on bool
needless_return = "warn" # trailing return keyword
needless_continue = "warn"
single_match = "warn" # match with one arm → if let
single_match_else = "warn" # match with two arms → if let else
# Iterator / functional style
manual_filter_map = "warn" # .filter().map() → .filter_map()
manual_find_map = "warn" # .find().map() → .find_map()
flat_map_option = "warn" # .flat_map(|x| x) → .flatten()
iter_not_returning_iterator = "warn" # fn iter() that doesn't return Iterator
# Import hygiene
wildcard_imports = "warn" # no use foo::*
enum_glob_use = "warn" # no use MyEnum::*
single_component_path_imports = "warn" # useless `use std;`
absolute_paths = "warn"
# Code smell detection
cognitive_complexity = "warn" # flags deeply nested / complex fns
too_many_lines = "warn" # flags oversized functions
fn_params_excessive_bools = "warn" # fn f(a: bool, b: bool, c: bool) smell
struct_excessive_bools = "warn" # struct with 3+ bool fields — use enum
large_stack_arrays = "warn" # accidental [0u8; 1_000_000] on stack
create_dir = "warn" # create_dir → create_dir_all
filetype_is_file = "warn" # .is_file() misses symlinks
# Library code hygiene (remove these if building a CLI/app only)
print_stdout = "warn" # no println! — use tracing/log
print_stderr = "warn" # no eprintln! — use tracing/log