@@ -9,7 +9,11 @@ use structopt::StructOpt;
99enum Opt {
1010 /// Download Intel-MKL library
1111 Download {
12- /// Install destination. Default is `$XDG_DATA_HOME/intel-mkl-tool`
12+ /// Archive name, e.g. "mkl-static-lp64-iomp". Download all archives if None
13+ #[ structopt( long = "name" ) ]
14+ name : Option < String > ,
15+ /// Install destination. Default is `$XDG_DATA_HOME/intel-mkl-tool/${MKL_VERSION}/`
16+ #[ structopt( short = "o" , long = "path" ) ]
1317 path : Option < PathBuf > ,
1418 } ,
1519
@@ -22,8 +26,10 @@ enum Opt {
2226
2327 /// Package Intel MKL libraries into an archive
2428 Package {
29+ #[ structopt( long = "name" ) ]
2530 name : Option < String > ,
26- out : Option < PathBuf > ,
31+ #[ structopt( short = "o" , long = "path" ) ]
32+ path : Option < PathBuf > ,
2733 } ,
2834}
2935
@@ -34,13 +40,21 @@ fn main() -> Result<()> {
3440 let opt = Opt :: from_args ( ) ;
3541
3642 match opt {
37- Opt :: Download { path } => {
38- let path = if let Some ( path) = path {
39- path
43+ Opt :: Download { name, path } => {
44+ let path = path. unwrap_or ( xdg_home_path ( ) ) ;
45+ if let Some ( name) = name {
46+ let cfg = Config :: from_str ( & name) ?;
47+ cfg. download ( & path. join ( cfg. name ( ) ) ) ?;
4048 } else {
41- xdg_home_path ( )
42- } ;
43- download_default ( & path) ?;
49+ for cfg in Config :: possibles ( ) {
50+ info ! (
51+ "Download archive {:<22} into {}" ,
52+ cfg. name( ) ,
53+ path. display( )
54+ ) ;
55+ cfg. download ( & path. join ( cfg. name ( ) ) ) ?;
56+ }
57+ }
4458 }
4559
4660 Opt :: Seek { } => {
@@ -56,26 +70,26 @@ fn main() -> Result<()> {
5670 }
5771 }
5872
59- Opt :: Package { name, out } => {
60- let out = out . unwrap_or ( env:: current_dir ( ) . unwrap ( ) ) ;
73+ Opt :: Package { name, path } => {
74+ let path = path . unwrap_or ( env:: current_dir ( ) . unwrap ( ) ) ;
6175 if let Some ( name) = name {
6276 let cfg = Config :: from_str ( & name) ?;
6377 let entry = Entry :: from_config ( cfg) ?;
64- let out = if let Ok ( version) = entry. version ( ) {
65- out . join ( format ! ( "{}.{}" , version. 0 , version. 1 ) )
78+ let path = if let Ok ( version) = entry. version ( ) {
79+ path . join ( format ! ( "{}.{}" , version. 0 , version. 1 ) )
6680 } else {
67- out
81+ path
6882 } ;
69- let package = entry. package ( & out ) ?;
83+ let package = entry. package ( & path ) ?;
7084 info ! ( "Pacakge created: {}" , package. display( ) ) ;
7185 } else {
7286 for entry in Entry :: available ( ) {
73- let out = if let Ok ( version) = entry. version ( ) {
74- out . join ( format ! ( "{}.{}" , version. 0 , version. 1 ) )
87+ let path = if let Ok ( version) = entry. version ( ) {
88+ path . join ( format ! ( "{}.{}" , version. 0 , version. 1 ) )
7589 } else {
76- out . clone ( )
90+ path . clone ( )
7791 } ;
78- let package = entry. package ( & out ) ?;
92+ let package = entry. package ( & path ) ?;
7993 info ! ( "Pacakge created: {}" , package. display( ) ) ;
8094 }
8195 }
0 commit comments