@@ -6,7 +6,8 @@ use async_std::prelude::*;
66use chrono:: Utc ;
77use serde:: { Deserialize , Serialize } ;
88use serde_json:: json;
9- use std:: io:: Write ;
9+ use std:: fs:: OpenOptions ;
10+ use std:: io:: { Seek , SeekFrom , Write } ;
1011use std:: net:: { IpAddr , Ipv4Addr , SocketAddr } ;
1112use std:: process:: { Command , Output } ;
1213use 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