more stuff in the process of making it write logs and db and stuff
This commit is contained in:
parent
ecd637af9c
commit
870e63646e
2 changed files with 43 additions and 22 deletions
10
src/data.rs
10
src/data.rs
|
@ -77,11 +77,17 @@ pub(crate) struct Package {
|
||||||
/// The exit status and stuff for a [`Job`]
|
/// The exit status and stuff for a [`Job`]
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub(crate) struct JobExitStatus {
|
pub(crate) struct JobExitStatus {
|
||||||
pub(crate) job: Job,
|
|
||||||
/// The [`Job`] this status is from
|
/// The [`Job`] this status is from
|
||||||
|
pub(crate) job: Job,
|
||||||
|
/// The status code returned by the command - note that this can be None if the program exits due to a signal like SIGKILL.
|
||||||
///
|
///
|
||||||
/// This is stored as a u16 rather than a u8 so that 65535 can be returned if there is no exit code rather than doing an Option or something, which I fear will probably come back to haunt me, but whatever
|
/// This is stored as a u16 rather than a u8 so that 65535 can be returned if there is no exit code rather than doing an Option or something, which I fear will probably come back to haunt me, but whatever
|
||||||
pub(crate) exit_code: u16,
|
/// Update: I knew it. Why did I do this. Anyways this is gonna be an Option<i32> like Command uses now
|
||||||
|
///
|
||||||
|
/// Hell this isn't even coming back to haunt me for any sane reason, it's because I went with the actually sensible decision of Option<i32> in better-commands, so if I want to use that then I'm stuck using this.
|
||||||
|
///
|
||||||
|
/// Anyways I'll stop rambling now.
|
||||||
|
pub(crate) exit_code: Option<i32>,
|
||||||
/// Where the log is
|
/// Where the log is
|
||||||
///
|
///
|
||||||
/// TEMPORARY
|
/// TEMPORARY
|
||||||
|
|
51
src/main.rs
51
src/main.rs
|
@ -14,11 +14,12 @@ use std::path::Path;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
use better_commands;
|
||||||
|
|
||||||
mod cli;
|
mod cli;
|
||||||
mod data;
|
mod data;
|
||||||
mod tests;
|
|
||||||
mod errors;
|
mod errors;
|
||||||
|
mod tests;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let cli = Cli::parse();
|
let cli = Cli::parse();
|
||||||
|
@ -51,8 +52,6 @@ fn main() {
|
||||||
fn run(config_path: String) {
|
fn run(config_path: String) {
|
||||||
let config = config_from_file(config_path).unwrap();
|
let config = config_from_file(config_path).unwrap();
|
||||||
|
|
||||||
println!("{:#?}", config);
|
|
||||||
|
|
||||||
let mut jobs: Vec<Job> = Vec::new();
|
let mut jobs: Vec<Job> = Vec::new();
|
||||||
|
|
||||||
for (_, package) in config.clone().packages {
|
for (_, package) in config.clone().packages {
|
||||||
|
@ -102,6 +101,7 @@ fn run_job(conf: Config, job: Job) -> JobExitStatus {
|
||||||
//.iter()
|
//.iter()
|
||||||
//.map(|item| {
|
//.map(|item| {
|
||||||
// // TODO: FIGURE OUT HOW TO HANDLE IT ESCAPING IT OR WHATEVER AAAAAAAAAAAAA
|
// // TODO: FIGURE OUT HOW TO HANDLE IT ESCAPING IT OR WHATEVER AAAAAAAAAAAAA
|
||||||
|
// // update: i have no idea what i was talking about previously
|
||||||
//})
|
//})
|
||||||
//.collect::<Vec<String>>()
|
//.collect::<Vec<String>>()
|
||||||
.join("\n"),
|
.join("\n"),
|
||||||
|
@ -116,36 +116,51 @@ fn run_job(conf: Config, job: Job) -> JobExitStatus {
|
||||||
.permissions();
|
.permissions();
|
||||||
PermissionsExt::set_mode(&mut perms, 0o755);
|
PermissionsExt::set_mode(&mut perms, 0o755);
|
||||||
|
|
||||||
let now = Instant::now();
|
let mut cmd_args: Vec<String> = vec![
|
||||||
let cmd_args: Vec<String> = vec![
|
|
||||||
"run".to_string(),
|
"run".to_string(),
|
||||||
format!("--name={container_name}"),
|
format!("--name={container_name}"),
|
||||||
format!("--cpus={threads}"),
|
format!("--cpus={threads}"),
|
||||||
format!("--privileged={}", job.privileged),
|
format!("--privileged={}", job.privileged),
|
||||||
format!("-v={script_path}:/gregory-entrypoint.sh"),
|
format!("-v={script_path}:/gregory-entrypoint.sh"),
|
||||||
format!(
|
];
|
||||||
|
for vol in job.clone().volumes.unwrap_or(Vec::new()) {
|
||||||
|
match conf.volumes.get(&vol) {
|
||||||
|
Some(item) => {
|
||||||
|
cmd_args.push(format!("-v={}", item));
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
println!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cmd_args.push(format!(
|
||||||
"--entrypoint=[\"{}\", \"/gregory-entrypoint.sh\"]",
|
"--entrypoint=[\"{}\", \"/gregory-entrypoint.sh\"]",
|
||||||
&job.shell
|
&job.shell
|
||||||
),
|
));
|
||||||
job.clone().image,
|
cmd_args.push(job.clone().image);
|
||||||
];
|
// TODO: TEMPORARY - update to actually write it in the future
|
||||||
println!("{:?}", cmd_args);
|
let cmd_output = better_commands::run_funcs(Command::new("podman").args(cmd_args), {
|
||||||
let cmd_output = Command::new("podman").args(cmd_args).output().unwrap();
|
|stdout_lines|
|
||||||
let elapsed = now.elapsed();
|
for line in stdout_lines {
|
||||||
|
println!("[stdout] {}", line.unwrap());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|stderr_lines|
|
||||||
|
for line in stderr_lines {
|
||||||
|
println!("[stderr] {}", line.unwrap());
|
||||||
|
}
|
||||||
|
});
|
||||||
// remove tmp dir
|
// remove tmp dir
|
||||||
remove_dir_all(script_dir).unwrap();
|
remove_dir_all(script_dir).unwrap();
|
||||||
|
|
||||||
// write logs - TEMPORARY
|
|
||||||
write(log_path, &cmd_output.stdout).unwrap();
|
|
||||||
write(format!("{log_path}.err"), &cmd_output.stderr).unwrap();
|
|
||||||
|
|
||||||
println!("{:?}", cmd_output);
|
println!("{:?}", cmd_output);
|
||||||
|
|
||||||
return JobExitStatus {
|
return JobExitStatus {
|
||||||
container_name: container_name,
|
container_name: container_name,
|
||||||
duration: elapsed,
|
duration: cmd_output.clone().duration(),
|
||||||
job: job,
|
job: job,
|
||||||
exit_code: cmd_output.status.code().ok_or_else(|| 65535).unwrap() as u16,
|
exit_code: cmd_output.status_code(),
|
||||||
log_path: log_path.clone(),
|
log_path: log_path.clone(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue