mirror of
https://codeberg.org/icewind/haze.git
synced 2026-06-03 09:04:12 +02:00
exec 101
This commit is contained in:
parent
06c0330de8
commit
3939d6423e
2 changed files with 29 additions and 3 deletions
26
src/cloud.rs
26
src/cloud.rs
|
|
@ -3,6 +3,7 @@ use bollard::container::{
|
||||||
Config, CreateContainerOptions, ListContainersOptions, LogsOptions, NetworkingConfig,
|
Config, CreateContainerOptions, ListContainersOptions, LogsOptions, NetworkingConfig,
|
||||||
RemoveContainerOptions,
|
RemoveContainerOptions,
|
||||||
};
|
};
|
||||||
|
use bollard::exec::{CreateExecOptions, StartExecResults};
|
||||||
use bollard::models::{ContainerState, EndpointSettings, HostConfig};
|
use bollard::models::{ContainerState, EndpointSettings, HostConfig};
|
||||||
use bollard::network::CreateNetworkOptions;
|
use bollard::network::CreateNetworkOptions;
|
||||||
use bollard::Docker;
|
use bollard::Docker;
|
||||||
|
|
@ -418,8 +419,8 @@ impl Cloud {
|
||||||
config.work_dir, id
|
config.work_dir, id
|
||||||
),
|
),
|
||||||
format!(
|
format!(
|
||||||
"{}/{}/skeleton/welcome.txt:/var/www/html/core/skeleton/welcome.txt:ro",
|
"{}/skeleton/welcome.txt:/var/www/html/core/skeleton/welcome.txt:ro",
|
||||||
config.sources_root, id
|
config.sources_root
|
||||||
),
|
),
|
||||||
format!(
|
format!(
|
||||||
"{}/{}/integration/vendor:/var/www/html/build/integration/vendor",
|
"{}/{}/integration/vendor:/var/www/html/build/integration/vendor",
|
||||||
|
|
@ -546,6 +547,27 @@ impl Cloud {
|
||||||
}
|
}
|
||||||
Ok(logs)
|
Ok(logs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn exec(&self, docker: &mut Docker, cmd: Vec<String>) -> Result<()> {
|
||||||
|
let config = CreateExecOptions {
|
||||||
|
cmd: Some(cmd),
|
||||||
|
user: Some("haze".to_string()),
|
||||||
|
attach_stdout: Some(true),
|
||||||
|
attach_stderr: Some(true),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let message = docker.create_exec(&self.id, config).await?;
|
||||||
|
let mut exec = docker.start_exec(&message.id, None);
|
||||||
|
while let Some(res) = exec.next().await {
|
||||||
|
match res? {
|
||||||
|
StartExecResults::Attached { log } => {
|
||||||
|
print!("{}", log);
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn setup_workdir(base: &Utf8Path, id: &str) -> Result<Utf8PathBuf> {
|
async fn setup_workdir(base: &Utf8Path, id: &str) -> Result<Utf8PathBuf> {
|
||||||
|
|
|
||||||
|
|
@ -62,12 +62,16 @@ async fn main() -> Result<()> {
|
||||||
println!("http://{}", cloud.ip.unwrap());
|
println!("http://{}", cloud.ip.unwrap());
|
||||||
}
|
}
|
||||||
HazeCommand::Logs => {
|
HazeCommand::Logs => {
|
||||||
let cloud = get_by_filter(&mut docker, args.options.first().cloned(), &config).await?;
|
let cloud = get_by_filter(&mut docker, None, &config).await?;
|
||||||
let logs = cloud.logs(&mut docker).await?;
|
let logs = cloud.logs(&mut docker).await?;
|
||||||
for log in logs {
|
for log in logs {
|
||||||
print!("{}", log);
|
print!("{}", log);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
HazeCommand::Exec => {
|
||||||
|
let cloud = get_by_filter(&mut docker, None, &config).await?;
|
||||||
|
cloud.exec(&mut docker, args.options).await?;
|
||||||
|
}
|
||||||
_ => todo!(),
|
_ => todo!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue