Files
loot-condition-interpreter/Cargo.toml
T
Oliver Hamlet daf229c1e9 Implement PE executable version parsing
Using only the standard library (i.e. without pelite).

This commit keeps the pelite dependency and uses it to check that the
new parser gives the same result. The next commit will remove pelite.

I've verified that both parsers give the same result for the following
files that are referenced in the masterlists' version conditions:

Starfield.exe
sfse_1_15_222.dll
SkyrimSE.exe
skse64_loader.exe
skseVR_loader.exe
ENBHelperSE.dll
d3d11.dll
EngineFixes.dll
QuickLootEE.dll
FalloutNV.exe
nvse_1_4.dll
nvse_1_4ng.dll
nvse_1_1.dll
Fallout3.exe
fose_1_7.dll
fose_1_7ng.dll
nvac.dll
Fallout4.exe
f4se_loader.exe
f4sevr_loader.exe
place.dll
obse_1_2_416.dll
TESV.exe
skse_loader.exe

The only referenced files that I couldn't test against were SkyrimVR.exe
and Fallout4VR.exe, because I don't own those games.
2025-12-03 18:39:27 +00:00

129 lines
3.3 KiB
TOML

[package]
name = "loot-condition-interpreter"
description = "Parse and evaluate LOOT metadata condition strings."
version.workspace = true
authors.workspace = true
repository.workspace = true
license.workspace = true
edition.workspace = true
[dependencies]
crc32fast = "1"
esplugin = "6"
nom = "8"
pelite = ">= 0.9.0, < 0.11"
regex = ">= 0.2.7, < 2"
unicase = "2"
[dev-dependencies]
criterion = ">= 0.1.2, < 0.8"
tempfile = "3"
[lints]
workspace = true
[[bench]]
name = "eval"
harness = false
[workspace]
members = ["ffi"]
[workspace.package]
version = "5.3.3"
authors = ["Oliver Hamlet <oliver@ortham.net>"]
repository = "https://github.com/loot/loot-condition-interpreter.git"
license = "MIT"
edition = "2021"
# Deny some rustc lints that are allow-by-default.
[workspace.lints.rust]
ambiguous_negative_literals = "forbid"
impl_trait_overcaptures = "forbid"
let_underscore_drop = "forbid"
missing_copy_implementations = "forbid"
missing_debug_implementations = "forbid"
non_ascii_idents = "forbid"
redundant_imports = "forbid"
redundant_lifetimes = "forbid"
trivial_casts = "forbid"
trivial_numeric_casts = "forbid"
unit_bindings = "forbid"
unreachable_pub = "forbid"
unsafe_code = "deny"
[workspace.lints.clippy]
pedantic = { level = "deny", priority = -1 }
allow_attributes = "deny"
as_conversions = "deny"
as_underscore = "forbid"
assertions_on_result_states = "deny"
big_endian_bytes = "forbid"
cfg_not_test = "forbid"
clone_on_ref_ptr = "forbid"
create_dir = "forbid"
dbg_macro = "forbid"
decimal_literal_representation = "forbid"
default_numeric_fallback = "forbid"
doc_include_without_cfg = "forbid"
empty_drop = "forbid"
error_impl_error = "deny"
exit = "forbid"
exhaustive_enums = "deny"
expect_used = "forbid"
filetype_is_file = "deny"
float_cmp_const = "forbid"
fn_to_numeric_cast_any = "forbid"
get_unwrap = "forbid"
host_endian_bytes = "forbid"
if_then_some_else_none = "forbid"
indexing_slicing = "deny"
infinite_loop = "forbid"
integer_division = "deny"
integer_division_remainder_used = "deny"
iter_over_hash_type = "deny"
let_underscore_must_use = "forbid"
lossy_float_literal = "forbid"
map_err_ignore = "forbid"
map_with_unused_argument_over_ranges = "forbid"
mem_forget = "forbid"
missing_assert_message = "deny"
missing_asserts_for_indexing = "deny"
mixed_read_write_in_expression = "forbid"
multiple_inherent_impl = "deny"
multiple_unsafe_ops_per_block = "deny"
mutex_atomic = "forbid"
mutex_integer = "forbid"
needless_raw_strings = "forbid"
non_ascii_literal = "forbid"
non_zero_suggestions = "forbid"
panic = "deny"
panic_in_result_fn = "forbid"
partial_pub_fields = "forbid"
pathbuf_init_then_push = "forbid"
precedence_bits = "forbid"
print_stderr = "forbid"
print_stdout = "forbid"
rc_buffer = "forbid"
rc_mutex = "forbid"
redundant_type_annotations = "forbid"
ref_patterns = "forbid"
rest_pat_in_fully_bound_structs = "forbid"
str_to_string = "forbid"
string_lit_chars_any = "forbid"
string_slice = "forbid"
suspicious_xor_used_as_pow = "forbid"
tests_outside_test_module = "forbid"
todo = "forbid"
try_err = "forbid"
undocumented_unsafe_blocks = "deny"
unimplemented = "forbid"
unnecessary_safety_comment = "forbid"
unneeded_field_pattern = "forbid"
unreachable = "forbid"
unused_result_ok = "forbid"
unwrap_in_result = "forbid"
unwrap_used = "deny"
use_debug = "deny"
verbose_file_reads = "forbid"