| 
					
				 | 
			
			
				@@ -27,7 +27,7 @@ fn main() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let mut opts = Options::new(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     opts.reqopt("a", "appkey", "Path to a spotify appkey", "APPKEY"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    opts.reqopt("u", "username", "Username to sign in with", "USERNAME"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    opts.optopt("u", "username", "Username to sign in with (optional)", "USERNAME"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     opts.optopt("p", "password", "Password (optional)", "PASSWORD"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     opts.reqopt("c", "cache", "Path to a directory where files will be cached.", "CACHE"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     opts.reqopt("n", "name", "Device name", "NAME"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -50,14 +50,18 @@ fn main() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let username = matches.opt_str("u").unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let username = matches.opt_str("u"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let cache_location = matches.opt_str("c").unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let name = matches.opt_str("n").unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let password = matches.opt_str("p").unwrap_or_else(|| { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        print!("Password: ");  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        stdout().flush().unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        read_password().unwrap() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let credentials = username.map(|u| { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let password = matches.opt_str("p").unwrap_or_else(|| { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            print!("Password: "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stdout().flush().unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            read_password().unwrap() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (u, password) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let config = Config { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68,9 +72,13 @@ fn main() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let session = Session::new(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //session.login_password(username, password).unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let mut discovery = DiscoveryManager::new(session.clone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    discovery.run(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if let Some((username, password)) = credentials { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        session.login_password(username, password).unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let mut discovery = DiscoveryManager::new(session.clone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        discovery.run(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let player = Player::new(session.clone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let mut spirc = SpircManager::new(session.clone(), player); 
			 |