mirror of
https://codeberg.org/icewind/haze.git
synced 2026-10-01 08:44:09 +02:00
allow opening services with haze open
This commit is contained in:
parent
515fc60f49
commit
6c440952dc
3 changed files with 37 additions and 5 deletions
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
- Support having a `#!` inside a haze script to specify the interpreter to use
|
||||
- Add webui for accessing the database.
|
||||
- Allow opening services with `haze open [service]`
|
||||
|
||||
## 2.4.1
|
||||
|
||||
|
|
|
|||
18
src/args.rs
18
src/args.rs
|
|
@ -64,6 +64,7 @@ pub enum HazeArgs {
|
|||
},
|
||||
Open {
|
||||
filter: Option<String>,
|
||||
service: Option<Service>,
|
||||
},
|
||||
Fmt {
|
||||
path: String,
|
||||
|
|
@ -317,7 +318,21 @@ impl HazeArgs {
|
|||
.into_diagnostic()?,
|
||||
})
|
||||
}
|
||||
HazeCommand::Open => Ok(HazeArgs::Open { filter }),
|
||||
HazeCommand::Open => {
|
||||
let mut args = args.peekable();
|
||||
let service = match args.peek() {
|
||||
Some(arg) => Service::from_type(&[], arg.as_ref())
|
||||
.into_iter()
|
||||
.filter_map(|services| services.into_iter().next())
|
||||
.next()
|
||||
.map(|service| {
|
||||
args.next();
|
||||
service
|
||||
}),
|
||||
_ => None,
|
||||
};
|
||||
Ok(HazeArgs::Open { filter, service })
|
||||
}
|
||||
HazeCommand::Fmt => {
|
||||
let path = args
|
||||
.next()
|
||||
|
|
@ -472,6 +487,7 @@ pub enum HazeCommand {
|
|||
))]
|
||||
Logs,
|
||||
/// Open an instance in the browser
|
||||
#[strum(props(Args = "[service] service to open, instead of the Nextcloud instance"))]
|
||||
Open,
|
||||
/// Run code formatting from a new instance
|
||||
#[strum(props(Args = "[path] path to format"))]
|
||||
|
|
|
|||
19
src/main.rs
19
src/main.rs
|
|
@ -286,11 +286,26 @@ async fn main() -> Result<ExitCode> {
|
|||
.await?;
|
||||
}
|
||||
}
|
||||
HazeArgs::Open { filter } => {
|
||||
HazeArgs::Open { filter, service } => {
|
||||
let cloud = Cloud::get_by_filter(&docker, filter, &config).await?;
|
||||
match cloud.ip {
|
||||
match service {
|
||||
Some(service) => {
|
||||
let Some(ip) = service.get_ips(&docker, &cloud.id).await?.next() else {
|
||||
eprintln!(
|
||||
"Service {} can't be opened as it has no associated IP",
|
||||
service.name()
|
||||
);
|
||||
return Ok(ExitCode::FAILURE);
|
||||
};
|
||||
let addr = config
|
||||
.proxy
|
||||
.addr(&format!("{}-{}", &cloud.id, service.name()), ip);
|
||||
opener::open(addr).into_diagnostic()?;
|
||||
}
|
||||
None => match cloud.ip {
|
||||
Some(_) => opener::open(cloud.address).into_diagnostic()?,
|
||||
None => eprintln!("{} is not running", cloud.id),
|
||||
},
|
||||
}
|
||||
}
|
||||
HazeArgs::Test { options, mut args } => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue