1
+ use std:: { collections:: HashMap , path:: Path } ;
2
+
1
3
use anyhow:: Ok ;
2
4
3
5
use crate :: { endgroup, group, utils:: process:: run_process} ;
4
6
5
7
/// Allow to build additional crates outside the common build commands
6
- pub fn custom_crates_build ( crates : Vec < & str > , params : Vec < & str > ) -> anyhow:: Result < ( ) > {
8
+ pub fn custom_crates_build (
9
+ crates : Vec < & str > ,
10
+ args : Vec < & str > ,
11
+ envs : Option < HashMap < & str , & str > > ,
12
+ path : Option < & Path > ,
13
+ group_msg : & str ,
14
+ ) -> anyhow:: Result < ( ) > {
7
15
let mut base_args = vec ! [ "build" , "--color" , "always" ] ;
8
- base_args. extend ( params ) ;
16
+ base_args. extend ( args ) ;
9
17
crates. iter ( ) . try_for_each ( |c| {
10
- group ! ( "Custom Build: {}" , * c) ;
18
+ group ! ( "Custom Build: {} ({}) " , * c, group_msg ) ;
11
19
let mut args = base_args. clone ( ) ;
12
20
args. extend ( vec ! [ "-p" , * c] ) ;
13
21
run_process (
14
22
"cargo" ,
15
23
& args,
16
- None ,
17
- None ,
24
+ envs . clone ( ) ,
25
+ path ,
18
26
& format ! ( "Custom build failed for {}" , * c) ,
19
27
) ?;
20
28
endgroup ! ( ) ;
@@ -23,18 +31,24 @@ pub fn custom_crates_build(crates: Vec<&str>, params: Vec<&str>) -> anyhow::Resu
23
31
}
24
32
25
33
/// Allow to test additional crates with specific flags and config
26
- pub fn custom_crates_tests ( crates : Vec < & str > , params : Vec < & str > ) -> anyhow:: Result < ( ) > {
34
+ pub fn custom_crates_tests (
35
+ crates : Vec < & str > ,
36
+ args : Vec < & str > ,
37
+ envs : Option < HashMap < & str , & str > > ,
38
+ path : Option < & Path > ,
39
+ group_msg : & str ,
40
+ ) -> anyhow:: Result < ( ) > {
27
41
let mut base_args = vec ! [ "test" , "--color" , "always" ] ;
28
- base_args. extend ( params ) ;
42
+ base_args. extend ( args ) ;
29
43
crates. iter ( ) . try_for_each ( |c| {
30
- group ! ( "Custom Tests: {}" , * c) ;
44
+ group ! ( "Custom Tests: {} ({}) " , * c, group_msg ) ;
31
45
let mut args = base_args. clone ( ) ;
32
46
args. extend ( vec ! [ "-p" , * c] ) ;
33
47
run_process (
34
48
"cargo" ,
35
49
& args,
36
- None ,
37
- None ,
50
+ envs . clone ( ) ,
51
+ path ,
38
52
& format ! ( "Custom test failed for {}" , * c) ,
39
53
) ?;
40
54
endgroup ! ( ) ;
@@ -43,18 +57,24 @@ pub fn custom_crates_tests(crates: Vec<&str>, params: Vec<&str>) -> anyhow::Resu
43
57
}
44
58
45
59
/// Allow to build crate documentation additional crates outside the common doc commands
46
- pub fn custom_crates_doc_build ( crates : Vec < & str > , params : Vec < & str > ) -> anyhow:: Result < ( ) > {
60
+ pub fn custom_crates_doc_build (
61
+ crates : Vec < & str > ,
62
+ args : Vec < & str > ,
63
+ envs : Option < HashMap < & str , & str > > ,
64
+ path : Option < & Path > ,
65
+ group_msg : & str ,
66
+ ) -> anyhow:: Result < ( ) > {
47
67
let mut base_args = vec ! [ "doc" , "--no-deps" , "--color" , "always" ] ;
48
- base_args. extend ( params ) ;
68
+ base_args. extend ( args ) ;
49
69
crates. iter ( ) . try_for_each ( |c| {
50
- group ! ( "Custom doc build: {}" , * c) ;
70
+ group ! ( "Custom doc build: {} ({}) " , * c, group_msg ) ;
51
71
let mut args = base_args. clone ( ) ;
52
72
args. extend ( vec ! [ "-p" , * c] ) ;
53
73
run_process (
54
74
"cargo" ,
55
75
& args,
56
- None ,
57
- None ,
76
+ envs . clone ( ) ,
77
+ path ,
58
78
& format ! ( "Custom doc build failed for {}" , * c) ,
59
79
) ?;
60
80
endgroup ! ( ) ;
0 commit comments