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
|
[package]
name = "spandx"
version = "0.1.0"
edition = "2021"
rust-version = "1.70"
authors = ["Can Eldem <eldemcan@gmail.com>", "mo khan <mo@mokhan.ca>"]
description = "A Rust interface to the SPDX catalogue for dependency license scanning"
homepage = "https://spandx.github.io/"
repository = "https://github.com/spandx/spandx-rs"
license = "MIT"
keywords = ["spdx", "license", "dependencies", "security", "scanner"]
categories = ["command-line-utilities", "development-tools"]
[dependencies]
# CLI framework
clap = { version = "4.0", features = ["derive", "env"] }
# HTTP client
reqwest = { version = "0.11", features = ["json", "stream"] }
tokio = { version = "1.0", features = ["full"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
toml = "0.8"
# XML parsing
roxmltree = "0.19"
quick-xml = { version = "0.31", features = ["serialize"] }
# Git operations
git2 = "0.18"
# Error handling
anyhow = "1.0"
thiserror = "1.0"
# Async runtime and utilities
futures = "0.3"
async-trait = "0.1"
# Parallel processing
rayon = "1.8"
# Path handling
camino = { version = "1.1", features = ["serde1"] }
# Progress indicators
indicatif = "0.17"
# Table formatting
tabled = "0.14"
# CSV handling
csv = "1.3"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# URL handling
url = { version = "2.4", features = ["serde"] }
# Regular expressions
regex = "1.10"
# String similarity
strsim = "0.10"
# Configuration
config = "0.13"
# File watching and utilities
walkdir = "2.4"
tempfile = "3.8"
# Compression
flate2 = "1.0"
# Cache storage
sled = "0.34"
# HCL parsing for Terraform
hcl-rs = "0.16"
# License expression parsing
pest = "2.7"
pest_derive = "2.7"
# Binary data handling
byteorder = "1.5"
# Time handling
chrono = { version = "0.4", features = ["serde"] }
# UUID generation
uuid = { version = "1.6", features = ["v4"] }
# URL encoding
urlencoding = "2.1"
# Hashing
sha1 = "0.10"
# Directory utilities
dirs = "5.0"
# Static values
lazy_static = "1.4"
[dev-dependencies]
# Testing
tokio-test = "0.4"
wiremock = "0.5"
assert_cmd = "2.0"
predicates = "3.0"
tempfile = "3.8"
criterion = { version = "0.5", features = ["html_reports"] }
[build-dependencies]
# Build-time dependencies if needed
[[bin]]
name = "spandx"
path = "src/main.rs"
[[example]]
name = "hierarchical_cache_demo"
path = "examples/hierarchical_cache_demo.rs"
[[example]]
name = "error_handling_demo"
path = "examples/error_handling_demo.rs"
[profile.release]
lto = true
codegen-units = 1
panic = "abort"
strip = true
[[bench]]
name = "performance_benchmarks"
harness = false
|