Add a hostname and token cli param
This commit is contained in:
parent
cdfb24c487
commit
fa53ee6f60
4 changed files with 27 additions and 5 deletions
|
@ -5,6 +5,12 @@ use std::str::FromStr;
|
|||
#[clap(author, version, about, long_about = None)]
|
||||
#[clap(propagate_version = true)]
|
||||
pub struct Args {
|
||||
#[clap(short, long)]
|
||||
pub token: Option<String>,
|
||||
|
||||
#[clap(short, long)]
|
||||
pub hostname: Option<String>,
|
||||
|
||||
#[clap(subcommand)]
|
||||
pub command: Commands,
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
mod config_file;
|
||||
mod environment;
|
||||
|
||||
use eyre::{eyre, Result};
|
||||
|
||||
|
@ -9,12 +8,15 @@ pub struct Config {
|
|||
pub token: String,
|
||||
}
|
||||
|
||||
pub async fn resolve() -> Result<Config> {
|
||||
pub async fn resolve(args: &crate::args::Args) -> Result<Config> {
|
||||
let mut config = Config {
|
||||
hostname: "".to_string(),
|
||||
token: "".to_string(),
|
||||
};
|
||||
|
||||
///////
|
||||
// Config file
|
||||
///////
|
||||
let config_file = config_file::read().await?;
|
||||
if let Some(c) = config_file {
|
||||
if let Some(token) = c.token {
|
||||
|
@ -25,6 +27,9 @@ pub async fn resolve() -> Result<Config> {
|
|||
}
|
||||
}
|
||||
|
||||
///////
|
||||
// Environment variables
|
||||
///////
|
||||
if let Ok(token) = std::env::var("HUE_TOKEN") {
|
||||
config.token = token;
|
||||
}
|
||||
|
@ -33,8 +38,20 @@ pub async fn resolve() -> Result<Config> {
|
|||
config.hostname = host;
|
||||
}
|
||||
|
||||
println!("{:?}", config);
|
||||
///////
|
||||
// CLI Params
|
||||
///////
|
||||
if let Some(token) = &args.token {
|
||||
config.token = token.clone()
|
||||
}
|
||||
|
||||
if let Some(hostname) = &args.hostname {
|
||||
config.hostname = hostname.clone()
|
||||
}
|
||||
|
||||
///////
|
||||
// Validate config
|
||||
///////
|
||||
if let Err(e) = validate_config(&config) {
|
||||
return Err(e);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ use eyre::{eyre, Result};
|
|||
#[tokio::main]
|
||||
async fn main() -> Result<()> {
|
||||
let args = args::Args::parse();
|
||||
let config = config::resolve().await?;
|
||||
let config = config::resolve(&args).await?;
|
||||
|
||||
let res = match &args.command {
|
||||
args::Commands::Toggle { id, state } => {
|
||||
|
|
Loading…
Reference in a new issue