1
1
use anyhow:: { bail, Result } ;
2
2
use intel_mkl_tool:: * ;
3
- use std:: { env, path:: PathBuf , str:: FromStr } ;
4
3
use structopt:: StructOpt ;
5
4
6
5
/// CLI tool for intel-mkl crate
7
6
#[ derive( Debug , StructOpt ) ]
8
7
enum Opt {
9
- /// Download Intel-MKL library
10
- Download {
11
- /// Archive name, e.g. "mkl-static-lp64-iomp". Download all archives if None
12
- #[ structopt( long = "name" ) ]
13
- name : Option < String > ,
14
- /// Install destination
15
- #[ structopt( short = "o" , long = "path" ) ]
16
- path : PathBuf ,
17
- } ,
18
-
19
8
/// Seek Intel-MKL library
20
9
Seek { } ,
21
-
22
- /// Package Intel MKL libraries into an archive
23
- Package {
24
- #[ structopt( long = "name" ) ]
25
- name : Option < String > ,
26
- #[ structopt( short = "o" , long = "path" ) ]
27
- path : Option < PathBuf > ,
28
- } ,
29
10
}
30
11
31
12
fn main ( ) -> Result < ( ) > {
32
13
let opt = Opt :: from_args ( ) ;
33
14
34
15
match opt {
35
- Opt :: Download { name, path } => {
36
- if let Some ( name) = name {
37
- let cfg = Config :: from_str ( & name) ?;
38
- cfg. download ( & path. join ( cfg. to_string ( ) ) ) ?;
39
- } else {
40
- for cfg in Config :: possibles ( ) {
41
- println ! ( "Download archive {:<22} into {}" , cfg, path. display( ) ) ;
42
- cfg. download ( & path. join ( cfg. to_string ( ) ) ) ?;
43
- }
44
- }
45
- }
46
-
47
16
Opt :: Seek { } => {
48
17
let available = Entry :: available ( ) ;
49
18
if available. is_empty ( ) {
@@ -60,31 +29,6 @@ fn main() -> Result<()> {
60
29
}
61
30
}
62
31
}
63
-
64
- Opt :: Package { name, path } => {
65
- let path = path. unwrap_or ( env:: current_dir ( ) . unwrap ( ) ) ;
66
- if let Some ( name) = name {
67
- let cfg = Config :: from_str ( & name) ?;
68
- let entry = Entry :: from_config ( cfg) ?;
69
- let path = if let Ok ( version) = entry. version ( ) {
70
- path. join ( format ! ( "{}.{}" , version. 0 , version. 1 ) )
71
- } else {
72
- path
73
- } ;
74
- let package = entry. package ( & path) ?;
75
- println ! ( "Pacakge created: {}" , package. display( ) ) ;
76
- } else {
77
- for entry in Entry :: available ( ) {
78
- let path = if let Ok ( version) = entry. version ( ) {
79
- path. join ( format ! ( "{}.{}" , version. 0 , version. 1 ) )
80
- } else {
81
- path. clone ( )
82
- } ;
83
- let package = entry. package ( & path) ?;
84
- println ! ( "Pacakge created: {}" , package. display( ) ) ;
85
- }
86
- }
87
- }
88
32
}
89
33
Ok ( ( ) )
90
34
}
0 commit comments