@@ -130,11 +130,11 @@ pub(crate) async fn dispatch_vendor_one(
130130 } ) ;
131131 }
132132 }
133- Some ( match eco {
134- "npm" => {
135- // The flavor router probes the project's lockfile (package-lock /
136- // yarn / pnpm / bun) and dispatches or refuses per flavor.
137- vendor :: npm_flavor :: vendor_npm_any (
133+ // Every backend takes the identical 9-argument tuple; the macro keeps
134+ // the per-arm #[cfg] while collapsing the eight-way repetition.
135+ macro_rules! vend {
136+ ( $backend : path ) => {
137+ $backend (
138138 purl,
139139 pkg_path,
140140 project_root,
@@ -146,110 +146,24 @@ pub(crate) async fn dispatch_vendor_one(
146146 service,
147147 )
148148 . await
149- }
150- "pypi" => {
151- vendor:: pypi:: vendor_pypi (
152- purl,
153- pkg_path,
154- project_root,
155- record,
156- sources,
157- vendored_at,
158- dry_run,
159- force,
160- service,
161- )
162- . await
163- }
164- "gem" => {
165- vendor:: gem:: vendor_gem (
166- purl,
167- pkg_path,
168- project_root,
169- record,
170- sources,
171- vendored_at,
172- dry_run,
173- force,
174- service,
175- )
176- . await
177- }
149+ } ;
150+ }
151+ Some ( match eco {
152+ // The flavor router probes the project's lockfile (package-lock /
153+ // yarn / pnpm / bun) and dispatches or refuses per flavor.
154+ "npm" => vend ! ( vendor:: npm_flavor:: vendor_npm_any) ,
155+ "pypi" => vend ! ( vendor:: pypi:: vendor_pypi) ,
156+ "gem" => vend ! ( vendor:: gem:: vendor_gem) ,
178157 #[ cfg( feature = "cargo" ) ]
179- "cargo" => {
180- vendor:: cargo:: vendor_cargo_crate (
181- purl,
182- pkg_path,
183- project_root,
184- record,
185- sources,
186- vendored_at,
187- dry_run,
188- force,
189- service,
190- )
191- . await
192- }
158+ "cargo" => vend ! ( vendor:: cargo:: vendor_cargo_crate) ,
193159 #[ cfg( feature = "golang" ) ]
194- "golang" => {
195- vendor:: golang:: vendor_go_module (
196- purl,
197- pkg_path,
198- project_root,
199- record,
200- sources,
201- vendored_at,
202- dry_run,
203- force,
204- service,
205- )
206- . await
207- }
160+ "golang" => vend ! ( vendor:: golang:: vendor_go_module) ,
208161 #[ cfg( feature = "composer" ) ]
209- "composer" => {
210- vendor:: composer_lock:: vendor_composer (
211- purl,
212- pkg_path,
213- project_root,
214- record,
215- sources,
216- vendored_at,
217- dry_run,
218- force,
219- service,
220- )
221- . await
222- }
162+ "composer" => vend ! ( vendor:: composer_lock:: vendor_composer) ,
223163 #[ cfg( feature = "nuget" ) ]
224- "nuget" => {
225- vendor:: nuget_feed:: vendor_nuget (
226- purl,
227- pkg_path,
228- project_root,
229- record,
230- sources,
231- vendored_at,
232- dry_run,
233- force,
234- service,
235- )
236- . await
237- }
164+ "nuget" => vend ! ( vendor:: nuget_feed:: vendor_nuget) ,
238165 #[ cfg( feature = "maven" ) ]
239- "maven" => {
240- vendor:: maven_repo:: vendor_maven (
241- purl,
242- pkg_path,
243- project_root,
244- record,
245- sources,
246- vendored_at,
247- dry_run,
248- force,
249- service,
250- )
251- . await
252- }
166+ "maven" => vend ! ( vendor:: maven_repo:: vendor_maven) ,
253167 _ => return None ,
254168 } )
255169}
0 commit comments