Skip to content

Commit 8d05ea3

Browse files
mikolalysenkoclaude
andcommitted
refactor(vendor-cli): collapse the 8-way dispatch into a local macro
Every backend takes the identical 9-argument tuple; a local macro_rules! keeps the per-arm #[cfg] while removing ~90 lines of repetition. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 0f7c8af commit 8d05ea3

1 file changed

Lines changed: 18 additions & 104 deletions

File tree

  • crates/socket-patch-cli/src/commands

crates/socket-patch-cli/src/commands/vendor.rs

Lines changed: 18 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)