mirror of
https://codeberg.org/icewind/haze.git
synced 2026-06-03 17:14:08 +02:00
better service parsing
This commit is contained in:
parent
8f3405fabe
commit
3c97fc37e1
2 changed files with 26 additions and 8 deletions
|
|
@ -55,7 +55,7 @@ pub enum ExecService {
|
||||||
impl HazeArgs {
|
impl HazeArgs {
|
||||||
pub fn parse<I, S>(mut args: I) -> Result<HazeArgs>
|
pub fn parse<I, S>(mut args: I) -> Result<HazeArgs>
|
||||||
where
|
where
|
||||||
S: AsRef<str> + Into<String> + Display + PartialEq<str>,
|
S: AsRef<str> + Into<String> + Display,
|
||||||
I: Iterator<Item = S>,
|
I: Iterator<Item = S>,
|
||||||
{
|
{
|
||||||
let _bin = args.next();
|
let _bin = args.next();
|
||||||
|
|
@ -107,7 +107,7 @@ impl HazeArgs {
|
||||||
let mut args = args.peekable();
|
let mut args = args.peekable();
|
||||||
|
|
||||||
let service = match args.peek() {
|
let service = match args.peek() {
|
||||||
Some(arg) if arg == "db" => {
|
Some(arg) if arg.as_ref() == "db" => {
|
||||||
args.next();
|
args.next();
|
||||||
Some(ExecService::Db)
|
Some(ExecService::Db)
|
||||||
}
|
}
|
||||||
|
|
@ -127,7 +127,7 @@ impl HazeArgs {
|
||||||
}),
|
}),
|
||||||
HazeCommand::Db => Ok(HazeArgs::Db {
|
HazeCommand::Db => Ok(HazeArgs::Db {
|
||||||
filter,
|
filter,
|
||||||
root: args.next().filter(|arg| arg == "root").is_some(),
|
root: args.next().filter(|arg| arg.as_ref() == "root").is_some(),
|
||||||
}),
|
}),
|
||||||
HazeCommand::Clean => Ok(HazeArgs::Clean),
|
HazeCommand::Clean => Ok(HazeArgs::Clean),
|
||||||
HazeCommand::Logs => {
|
HazeCommand::Logs => {
|
||||||
|
|
@ -259,7 +259,7 @@ fn test_arg_parse() {
|
||||||
HazeArgs::parse(vec!["haze", "asdasd", "exec", "db", "foo", "bar"].into_iter()).unwrap(),
|
HazeArgs::parse(vec!["haze", "asdasd", "exec", "db", "foo", "bar"].into_iter()).unwrap(),
|
||||||
HazeArgs::Exec {
|
HazeArgs::Exec {
|
||||||
filter: Some("asdasd".to_string()),
|
filter: Some("asdasd".to_string()),
|
||||||
service: Some("db".to_string()),
|
service: Some(ExecService::Db),
|
||||||
command: vec!["foo".to_string(), "bar".to_string()],
|
command: vec!["foo".to_string(), "bar".to_string()],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
26
src/cloud.rs
26
src/cloud.rs
|
|
@ -55,10 +55,6 @@ impl CloudOptions {
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if db.is_some() && php.is_some() {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(CloudOptions {
|
Ok(CloudOptions {
|
||||||
|
|
@ -71,6 +67,8 @@ impl CloudOptions {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_option_parse() {
|
fn test_option_parse() {
|
||||||
|
use crate::service::{LDAPAdmin, LDAP};
|
||||||
|
|
||||||
let mut args = vec![].into_iter().peekable();
|
let mut args = vec![].into_iter().peekable();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
CloudOptions::parse::<_, &str>(&mut args).unwrap(),
|
CloudOptions::parse::<_, &str>(&mut args).unwrap(),
|
||||||
|
|
@ -108,6 +106,26 @@ fn test_option_parse() {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
let mut args = vec!["7", "ldap", "pgsql"].into_iter().peekable();
|
||||||
|
assert_eq!(
|
||||||
|
CloudOptions::parse(&mut args).unwrap(),
|
||||||
|
CloudOptions {
|
||||||
|
php: PhpVersion::Php74,
|
||||||
|
db: Database::Postgres,
|
||||||
|
services: vec![Service::Ldap(LDAP), Service::LdapAdmin(LDAPAdmin)],
|
||||||
|
..Default::default()
|
||||||
|
}
|
||||||
|
);
|
||||||
|
let mut args = vec!["7", "pgsql", "ldap"].into_iter().peekable();
|
||||||
|
assert_eq!(
|
||||||
|
CloudOptions::parse(&mut args).unwrap(),
|
||||||
|
CloudOptions {
|
||||||
|
php: PhpVersion::Php74,
|
||||||
|
db: Database::Postgres,
|
||||||
|
services: vec![Service::Ldap(LDAP), Service::LdapAdmin(LDAPAdmin)],
|
||||||
|
..Default::default()
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue