| 
									
										
										
										
											2018-12-14 20:39:10 -08:00
										 |  |  | use clap::{crate_version, App, Arg};
 | 
					
						
							| 
									
										
										
										
											2018-12-12 13:13:18 -08:00
										 |  |  | use solana_sdk::signature::gen_keypair_file;
 | 
					
						
							| 
									
										
										
										
											2018-07-12 11:59:40 -06:00
										 |  |  | use std::error;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-08 22:44:20 -07:00
										 |  |  | fn main() -> Result<(), Box<dyn error::Error>> {
 | 
					
						
							| 
									
										
										
										
											2018-07-12 17:29:10 -06:00
										 |  |  |     let matches = App::new("solana-keygen")
 | 
					
						
							| 
									
										
										
										
											2018-08-06 20:51:12 -07:00
										 |  |  |         .version(crate_version!())
 | 
					
						
							| 
									
										
										
										
											2018-07-12 16:29:49 -06:00
										 |  |  |         .arg(
 | 
					
						
							|  |  |  |             Arg::with_name("outfile")
 | 
					
						
							|  |  |  |                 .short("o")
 | 
					
						
							|  |  |  |                 .long("outfile")
 | 
					
						
							|  |  |  |                 .value_name("PATH")
 | 
					
						
							|  |  |  |                 .takes_value(true)
 | 
					
						
							| 
									
										
										
										
											2018-09-14 16:32:57 -06:00
										 |  |  |                 .help("Path to generated file"),
 | 
					
						
							| 
									
										
										
										
											2018-12-07 20:01:28 -07:00
										 |  |  |         )
 | 
					
						
							|  |  |  |         .get_matches();
 | 
					
						
							| 
									
										
										
										
											2018-07-12 16:29:49 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-12 18:16:30 -06:00
										 |  |  |     let mut path = dirs::home_dir().expect("home directory");
 | 
					
						
							| 
									
										
										
										
											2018-07-12 17:04:42 -06:00
										 |  |  |     let outfile = if matches.is_present("outfile") {
 | 
					
						
							|  |  |  |         matches.value_of("outfile").unwrap()
 | 
					
						
							|  |  |  |     } else {
 | 
					
						
							|  |  |  |         path.extend(&[".config", "solana", "id.json"]);
 | 
					
						
							|  |  |  |         path.to_str().unwrap()
 | 
					
						
							|  |  |  |     };
 | 
					
						
							| 
									
										
										
										
											2018-07-12 16:29:49 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-17 10:48:04 -06:00
										 |  |  |     let serialized_keypair = gen_keypair_file(outfile.to_string())?;
 | 
					
						
							| 
									
										
										
										
											2018-07-12 16:29:49 -06:00
										 |  |  |     if outfile == "-" {
 | 
					
						
							| 
									
										
										
										
											2018-09-17 10:48:04 -06:00
										 |  |  |         println!("{}", serialized_keypair);
 | 
					
						
							| 
									
										
										
										
											2018-07-12 16:29:49 -06:00
										 |  |  |     }
 | 
					
						
							| 
									
										
										
										
											2018-07-12 11:59:40 -06:00
										 |  |  |     Ok(())
 | 
					
						
							|  |  |  | }
 |