Skip to content

Commit 945a087

Browse files
committed
Remove dev-dependencies only feature when publish
1 parent 57326f5 commit 945a087

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

src/cargo/ops/registry.rs

+23-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use std::cmp;
21
use std::collections::{BTreeMap, HashSet};
32
use std::fs::File;
43
use std::io::{self, BufRead};
@@ -7,6 +6,7 @@ use std::path::PathBuf;
76
use std::str;
87
use std::task::Poll;
98
use std::time::Duration;
9+
use std::{cmp, str};
1010

1111
use anyhow::{anyhow, bail, format_err, Context as _};
1212
use cargo_util::paths;
@@ -366,13 +366,34 @@ fn transmit(
366366
return Ok(());
367367
}
368368

369+
fn is_deps_feature(deps: Vec<NewCrateDependency>, feature: &str) -> bool {
370+
if !feature.contains('/') {
371+
return true;
372+
}
373+
let mut iter = feature.split('/');
374+
let dep_name = iter.next().unwrap();
375+
let feature_name = iter.next().unwrap();
376+
for dep in deps.iter() {
377+
if dep.name == dep_name {
378+
if dep.features.contains(&feature_name.to_string()) {
379+
return true;
380+
}
381+
}
382+
}
383+
false
384+
}
385+
369386
let string_features = match manifest.original().features() {
370387
Some(features) => features
371388
.iter()
372389
.map(|(feat, values)| {
373390
(
374391
feat.to_string(),
375-
values.iter().map(|fv| fv.to_string()).collect(),
392+
values
393+
.iter()
394+
.map(|fv| fv.to_string())
395+
.filter(|feat| is_deps_feature(deps.clone(), feat))
396+
.collect(),
376397
)
377398
})
378399
.collect::<BTreeMap<String, Vec<String>>>(),

0 commit comments

Comments
 (0)