Skip to content

Commit 2f06a70

Browse files
committed
fix: Do not write NUL to metadata file
Also parse metadata as Metadata instead of serde::Value
1 parent ea02cea commit 2f06a70

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/main.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ use async_std::prelude::*;
66
use chrono::Utc;
77
use serde::{Deserialize, Serialize};
88
use serde_json::json;
9-
use std::io::Write;
9+
use std::fs::OpenOptions;
10+
use std::io::{Seek,SeekFrom, Write};
1011
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
1112
use std::process::{Command, Output};
1213
use std::{fs, process, str, thread};
@@ -146,8 +147,7 @@ fn run_project(
146147
metadata.status = MetadataStatus::Succeeded;
147148
}
148149
metadata.ended_at = Some(Utc::now().to_rfc3339());
149-
// TODO: Discuss alternatives to update file content.
150-
metadata_log.set_len(0).unwrap();
150+
metadata_log.seek(SeekFrom::Start(0)).unwrap();
151151
metadata_log
152152
.write_all(metadata.to_json_string().unwrap().as_bytes())
153153
.unwrap();
@@ -168,8 +168,11 @@ fn spawn_job(logs_dir: &str, project: Project) -> String {
168168
};
169169

170170
let log = fs::File::create(file_name).expect("Failed to create log file");
171-
let mut metadata_log =
172-
fs::File::create(metadata_file_name).expect("Failed to create metadata log file");
171+
let mut metadata_log = OpenOptions::new()
172+
.write(true)
173+
.create(true)
174+
.open(metadata_file_name)
175+
.expect("Failed to create metadata log file");
173176

174177
metadata_log
175178
.write_all(metadata.to_json_string().unwrap().as_bytes())
@@ -251,7 +254,8 @@ async fn get_job_by_name(
251254
let log = async_std::fs::read_to_string(log_file_name).await?;
252255
let metadata = async_std::fs::read_to_string(metadata_file_name).await?;
253256

254-
let metadata_json: serde_json::Value = serde_json::from_str(&metadata)?;
257+
let metadata_json: Metadata = serde_json::from_str(&metadata)?;
258+
255259
let response = json!({ "log": log, "metadata": metadata_json });
256260

257261
Ok(web::Json(response))

0 commit comments

Comments
 (0)