[package]
edition = "2024"
name = "docref"
version = "0.1.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Semantic code references for markdown — detect when referenced code changes"
readme = "README.md"
keywords = [
"documentation",
"references",
"markdown",
"code",
]
categories = [
"command-line-utilities",
"development-tools",
]
license = "MIT"
repository = "https://github.com/supersterling/docref"
[[bin]]
name = "docref"
path = "src/main.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[dependencies.clap]
version = "4"
features = [
"derive",
"suggestions",
]
[dependencies.crossbeam-channel]
version = "0.5"
[dependencies.notify]
version = "7"
[dependencies.regex]
version = "1"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha2]
version = "0.10"
[dependencies.thiserror]
version = "2"
[dependencies.toml]
version = "0.8"
[dependencies.toml_edit]
version = "0.22"
[dependencies.tree-sitter]
version = "0.25"
[dependencies.tree-sitter-bash]
version = "0.25"
[dependencies.tree-sitter-go]
version = "0.25"
[dependencies.tree-sitter-md]
version = "0.5"
[dependencies.tree-sitter-python]
version = "0.25"
[dependencies.tree-sitter-rust]
version = "0.24"
[dependencies.tree-sitter-typescript]
version = "0.23"
[dependencies.walkdir]
version = "2"
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tempfile]
version = "3"
[lints.clippy]
allow_attributes_without_reason = "deny"
almost_complete_range = "deny"
arbitrary_source_item_ordering = "deny"
arithmetic_side_effects = "deny"
as_conversions = "deny"
as_pointer_underscore = "deny"
as_ptr_cast_mut = "deny"
as_underscore = "deny"
assertions_on_constants = "deny"
assign_op_pattern = "deny"
bind_instead_of_map = "deny"
blocks_in_conditions = "deny"
bool_assert_comparison = "deny"
bool_comparison = "deny"
bool_to_int_with_if = "deny"
branches_sharing_code = "deny"
byte_char_slices = "deny"
bytes_count_to_len = "deny"
bytes_nth = "deny"
cargo_common_metadata = "deny"
case_sensitive_file_extension_comparisons = "warn"
cast_abs_to_unsigned = "deny"
cast_enum_constructor = "deny"
cast_enum_truncation = "deny"
cast_lossless = "deny"
cast_nan_to_int = "deny"
cast_possible_truncation = "deny"
cfg_not_test = "deny"
char_lit_as_u8 = "deny"
chars_last_cmp = "deny"
chars_next_cmp = "deny"
checked_conversions = "deny"
clear_with_drain = "deny"
clone_on_copy = "deny"
cloned_instead_of_copied = "deny"
cmp_null = "deny"
cmp_owned = "deny"
collapsible_else_if = "deny"
collapsible_if = "deny"
collapsible_match = "deny"
collapsible_str_replace = "deny"
collection_is_never_read = "deny"
comparison_chain = "deny"
comparison_to_empty = "deny"
confusing_method_to_numeric_cast = "deny"
const_is_empty = "deny"
decimal_literal_representation = "deny"
default_constructed_unit_structs = "deny"
default_instead_of_iter_empty = "deny"
default_union_representation = "deny"
deprecated_cfg_attr = "deny"
deprecated_clippy_cfg_attr = "deny"
derivable_impls = "deny"
derive_partial_eq_without_eq = "deny"
disallowed_script_idents = "deny"
doc_broken_link = "deny"
doc_comment_double_space_linebreaks = "deny"
doc_link_code = "deny"
double_comparisons = "deny"
double_ended_iterator_last = "deny"
double_must_use = "deny"
double_parens = "deny"
duplicate_mod = "deny"
duplicate_underscore_argument = "deny"
duplicated_attributes = "deny"
duration_subsec = "deny"
elidable_lifetime_names = "deny"
empty_docs = "deny"
empty_enum_variants_with_brackets = "deny"
empty_line_after_doc_comments = "deny"
empty_line_after_outer_attr = "deny"
empty_loop = "deny"
enum_glob_use = "deny"
enum_variant_names = "deny"
equatable_if_let = "deny"
err_expect = "deny"
error_impl_error = "deny"
excessive_nesting = "deny"
excessive_precision = "deny"
exit = "deny"
expect_fun_call = "deny"
expect_used = "deny"
explicit_counter_loop = "deny"
explicit_into_iter_loop = "deny"
explicit_write = "deny"
extend_with_drain = "deny"
extra_unused_lifetimes = "deny"
extra_unused_type_parameters = "deny"
fallible_impl_from = "deny"
field_reassign_with_default = "deny"
filetype_is_file = "deny"
filter_map_bool_then = "deny"
filter_map_identity = "deny"
filter_next = "deny"
flat_map_identity = "deny"
float_equality_without_abs = "deny"
fn_params_excessive_bools = "deny"
fn_to_numeric_cast = "deny"
fn_to_numeric_cast_with_truncation = "deny"
for_kv_map = "deny"
format_in_format_args = "deny"
four_forward_slashes = "deny"
from_over_into = "deny"
get_first = "deny"
get_last_with_len = "deny"
identity_op = "deny"
if_same_then_else = "deny"
if_then_some_else_none = "deny"
ignore_without_reason = "deny"
ignored_unit_patterns = "deny"
implicit_return = "deny"
implicit_saturating_add = "deny"
implicit_saturating_sub = "deny"
implied_bounds_in_impls = "deny"
imprecise_flops = "deny"
inconsistent_digit_grouping = "deny"
inconsistent_struct_constructor = "deny"
indexing_slicing = "deny"
ineffective_open_options = "deny"
infallible_destructuring_match = "deny"
infallible_try_from = "deny"
infinite_loop = "deny"
inherent_to_string = "deny"
init_numbered_fields = "deny"
inspect_for_each = "deny"
int_plus_one = "deny"
into_iter_on_ref = "deny"
io_other_error = "deny"
is_digit_ascii_radix = "deny"
items_after_statements = "deny"
items_after_test_module = "deny"
iter_cloned_collect = "deny"
iter_count = "deny"
iter_kv_map = "deny"
iter_next_slice = "deny"
iter_nth = "deny"
iter_nth_zero = "deny"
iter_out_of_bounds = "deny"
iter_overeager_cloned = "deny"
iter_skip_next = "deny"
join_absolute_paths = "deny"
just_underscores_and_digits = "deny"
large_const_arrays = "deny"
large_enum_variant = "deny"
len_without_is_empty = "deny"
len_zero = "deny"
let_and_return = "deny"
let_underscore_future = "deny"
let_unit_value = "deny"
let_with_type_underscore = "deny"
lines_filter_map_ok = "deny"
macro_metavars_in_unsafe = "deny"
macro_use_imports = "deny"
main_recursion = "deny"
manual_abs_diff = "deny"
manual_assert = "deny"
manual_async_fn = "deny"
manual_bits = "deny"
manual_c_str_literals = "deny"
manual_clamp = "deny"
manual_contains = "deny"
manual_div_ceil = "deny"
manual_filter = "deny"
manual_filter_map = "deny"
manual_find = "deny"
manual_find_map = "deny"
manual_flatten = "deny"
manual_hash_one = "deny"
manual_ignore_case_cmp = "deny"
manual_inspect = "deny"
manual_instant_elapsed = "deny"
manual_is_ascii_check = "deny"
manual_is_finite = "deny"
manual_is_infinite = "deny"
manual_is_multiple_of = "deny"
manual_is_power_of_two = "deny"
manual_is_variant_and = "deny"
manual_let_else = "deny"
manual_main_separator_str = "deny"
manual_map = "deny"
manual_memcpy = "deny"
manual_next_back = "deny"
manual_non_exhaustive = "deny"
manual_ok_err = "deny"
manual_ok_or = "deny"
manual_option_as_slice = "deny"
manual_pattern_char_comparison = "deny"
manual_range_contains = "deny"
manual_range_patterns = "deny"
manual_rem_euclid = "deny"
manual_repeat_n = "deny"
manual_retain = "deny"
manual_rotate = "deny"
manual_saturating_arithmetic = "deny"
manual_slice_fill = "deny"
manual_slice_size_calculation = "deny"
manual_split_once = "deny"
manual_str_repeat = "deny"
manual_string_new = "deny"
manual_strip = "deny"
manual_swap = "deny"
manual_try_fold = "deny"
manual_unwrap_or = "deny"
manual_unwrap_or_default = "deny"
manual_while_let_some = "deny"
map_all_any_identity = "deny"
map_clone = "deny"
map_collect_result_unit = "deny"
map_entry = "deny"
map_err_ignore = "deny"
map_flatten = "deny"
map_identity = "deny"
match_as_ref = "deny"
match_like_matches_macro = "deny"
match_overlapping_arm = "deny"
match_ref_pats = "deny"
match_result_ok = "deny"
match_single_binding = "deny"
match_wild_err_arm = "deny"
match_wildcard_for_single_variants = "deny"
mem_replace_option_with_none = "deny"
mem_replace_option_with_some = "deny"
mem_replace_with_default = "deny"
misnamed_getters = "deny"
misrefactored_assign_op = "deny"
missing_assert_message = "deny"
missing_const_for_fn = "warn"
missing_const_for_thread_local = "deny"
missing_docs_in_private_items = "deny"
missing_enforced_import_renames = "deny"
missing_errors_doc = "deny"
missing_panics_doc = "deny"
missing_safety_doc = "deny"
missing_spin_loop = "deny"
missing_transmute_annotations = "deny"
mixed_attributes_style = "deny"
mixed_case_hex_literals = "deny"
module_inception = "deny"
multi_assignments = "deny"
multiple_bound_locations = "deny"
multiple_inherent_impl = "deny"
must_use_unit = "deny"
mut_range_bound = "deny"
needless_arbitrary_self_type = "deny"
needless_as_bytes = "deny"
needless_bool = "deny"
needless_bool_assign = "deny"
needless_borrow = "deny"
needless_borrowed_reference = "deny"
needless_borrows_for_generic_args = "deny"
needless_character_iteration = "deny"
needless_doctest_main = "deny"
needless_else = "deny"
needless_ifs = "deny"
needless_late_init = "deny"
needless_lifetimes = "deny"
needless_match = "deny"
needless_maybe_sized = "deny"
needless_option_as_deref = "deny"
needless_option_take = "deny"
needless_parens_on_range_literals = "deny"
needless_pass_by_ref_mut = "deny"
needless_pass_by_value = "deny"
needless_pub_self = "deny"
needless_question_mark = "deny"
needless_range_loop = "deny"
needless_raw_string_hashes = "deny"
needless_return = "allow"
needless_return_with_question_mark = "deny"
needless_splitn = "deny"
needless_update = "deny"
neg_cmp_op_on_partial_ord = "deny"
neg_multiply = "deny"
negative_feature_names = "deny"
new_ret_no_self = "deny"
new_without_default = "deny"
no_effect = "deny"
no_effect_replace = "deny"
non_canonical_clone_impl = "deny"
non_canonical_partial_ord_impl = "deny"
non_minimal_cfg = "deny"
non_zero_suggestions = "deny"
nonminimal_bool = "deny"
nonstandard_macro_braces = "deny"
obfuscated_if_else = "deny"
octal_escapes = "deny"
ok_expect = "deny"
op_ref = "deny"
option_as_ref_deref = "deny"
option_filter_map = "deny"
option_if_let_else = "deny"
option_map_or_none = "deny"
option_map_unit_fn = "deny"
option_option = "deny"
or_then_unwrap = "deny"
partialeq_ne_impl = "deny"
partialeq_to_none = "deny"
permissions_set_readonly_false = "deny"
possible_missing_else = "deny"
precedence = "deny"
print_in_format_impl = "deny"
print_literal = "deny"
print_with_newline = "deny"
println_empty_string = "deny"
ptr_eq = "deny"
ptr_offset_with_cast = "deny"
pub_underscore_fields = "deny"
question_mark = "deny"
range_zip_with_len = "deny"
readonly_write_lock = "deny"
redundant_allocation = "deny"
redundant_as_str = "deny"
redundant_async_block = "deny"
redundant_at_rest_pattern = "deny"
redundant_closure = "deny"
redundant_closure_call = "deny"
redundant_field_names = "deny"
redundant_guards = "deny"
redundant_iter_cloned = "deny"
redundant_locals = "deny"
redundant_pattern = "deny"
redundant_pattern_matching = "deny"
redundant_slicing = "deny"
redundant_static_lifetimes = "deny"
regex_creation_in_loops = "deny"
repeat_once = "deny"
repeat_vec_with_capacity = "deny"
replace_box = "deny"
repr_packed_without_abi = "deny"
reserve_after_initialization = "deny"
result_filter_map = "deny"
result_large_err = "deny"
result_map_or_into_option = "deny"
result_map_unit_fn = "deny"
same_functions_in_if_condition = "deny"
same_item_push = "deny"
seek_from_current = "deny"
seek_to_start_instead_of_rewind = "deny"
self_named_constructors = "deny"
self_named_module_files = "deny"
semicolon_if_nothing_returned = "deny"
short_circuit_statement = "deny"
should_implement_trait = "deny"
single_char_add_str = "deny"
single_component_path_imports = "deny"
single_element_loop = "deny"
single_match = "deny"
single_range_in_vec_init = "deny"
size_of_ref = "deny"
skip_while_next = "deny"
slow_vector_initialization = "deny"
string_extend_chars = "deny"
string_from_utf8_as_bytes = "deny"
strlen_on_c_strings = "deny"
struct_excessive_bools = "deny"
suboptimal_flops = "deny"
suspicious_arithmetic_impl = "deny"
suspicious_assignment_formatting = "deny"
suspicious_command_arg_space = "deny"
suspicious_doc_comments = "deny"
suspicious_else_formatting = "deny"
suspicious_map = "deny"
suspicious_op_assign_impl = "deny"
suspicious_open_options = "deny"
suspicious_to_owned = "deny"
suspicious_unary_op_formatting = "deny"
suspicious_xor_used_as_pow = "deny"
swap_ptr_to_ref = "deny"
swap_with_temporary = "deny"
tabs_in_doc_comments = "deny"
temporary_assignment = "deny"
test_attr_in_doctest = "deny"
tests_outside_test_module = "deny"
to_digit_is_some = "deny"
to_string_in_format_args = "deny"
to_string_trait_impl = "deny"
todo = "deny"
too_long_first_doc_paragraph = "deny"
too_many_arguments = "deny"
too_many_lines = "deny"
toplevel_ref_arg = "deny"
trailing_empty_array = "deny"
trait_duplication_in_bounds = "deny"
transmute_bytes_to_str = "deny"
transmute_int_to_bool = "deny"
transmute_int_to_non_zero = "deny"
transmutes_expressible_as_ptr_casts = "deny"
trim_split_whitespace = "deny"
type_complexity = "deny"
type_repetition_in_bounds = "deny"
unbuffered_bytes = "deny"
unchecked_time_subtraction = "deny"
unconditional_recursion = "deny"
undocumented_unsafe_blocks = "deny"
unimplemented = "warn"
unit_arg = "deny"
unnecessary_box_returns = "deny"
unnecessary_cast = "deny"
unnecessary_clippy_cfg = "deny"
unnecessary_fallible_conversions = "deny"
unnecessary_filter_map = "deny"
unnecessary_find_map = "deny"
unnecessary_first_then_check = "deny"
unnecessary_fold = "deny"
unnecessary_get_then_check = "deny"
unnecessary_lazy_evaluations = "deny"
unnecessary_literal_unwrap = "deny"
unnecessary_map_on_constructor = "deny"
unnecessary_map_or = "deny"
unnecessary_min_or_max = "deny"
unnecessary_mut_passed = "deny"
unnecessary_operation = "deny"
unnecessary_option_map_or_else = "deny"
unnecessary_owned_empty_strings = "deny"
unnecessary_result_map_or_else = "deny"
unnecessary_safety_comment = "deny"
unnecessary_safety_doc = "deny"
unnecessary_sort_by = "deny"
unnecessary_unwrap = "deny"
unneeded_struct_pattern = "deny"
unneeded_wildcard_pattern = "deny"
unnested_or_patterns = "deny"
unreadable_literal = "deny"
unsafe_removed_from_name = "deny"
unseparated_literal_suffix = "deny"
unused_async = "deny"
unused_enumerate_index = "deny"
unused_format_specs = "deny"
unused_result_ok = "deny"
unused_rounding = "deny"
unused_self = "deny"
unused_trait_names = "deny"
unused_unit = "deny"
unusual_byte_groupings = "deny"
unwrap_or_default = "deny"
upper_case_acronyms = "deny"
used_underscore_items = "deny"
useless_asref = "deny"
useless_concat = "deny"
useless_conversion = "deny"
useless_format = "deny"
useless_let_if_seq = "deny"
useless_nonzero_new_unchecked = "deny"
useless_transmute = "deny"
useless_vec = "deny"
vec_box = "deny"
vec_init_then_push = "deny"
verbose_bit_mask = "deny"
verbose_file_reads = "deny"
waker_clone_wake = "deny"
while_let_loop = "deny"
while_let_on_iterator = "deny"
wildcard_in_or_patterns = "deny"
write_literal = "deny"
write_with_newline = "deny"
writeln_empty_string = "deny"
wrong_self_convention = "deny"
zero_divided_by_zero = "deny"
zero_prefixed_literal = "deny"
zero_ptr = "deny"
zero_repeat_side_effects = "deny"
zombie_processes = "deny"