diff --git a/lib/builder_web.ml b/lib/builder_web.ml index 8d7d4ea..0668810 100644 --- a/lib/builder_web.ml +++ b/lib/builder_web.ml @@ -21,7 +21,7 @@ let routes (t : Model.t) = Response.of_plain_text ~status:`Internal_server_error "Error getting jobs" |> Lwt.return | Ok jobs -> - List.sort (fun j1 j2 -> Fpath.compare j1.Model.path j2.Model.path) jobs + List.sort Fpath.compare jobs |> Views.builder |> Response.of_html |> Lwt.return in diff --git a/lib/model.ml b/lib/model.ml index 0511a55..3860788 100644 --- a/lib/model.ml +++ b/lib/model.ml @@ -81,9 +81,13 @@ let jobs t = Bos.OS.Dir.contents ~rel:true t.dir >>| List.filter (fun f -> not (Fpath.equal (Fpath.v "state") f)) >>| List.filter_map (fun f -> - match job t f with - | Ok job -> Some job + match Bos.OS.Dir.exists Fpath.(t.dir // f) with + | Ok true -> Some f + | Ok false -> + Log.warn (fun m -> m "dir %a doesn't exist" Fpath.pp + Fpath.(t.dir // f)); + None | Error (`Msg e) -> - Log.warn (fun m -> m "error reading job run dir %a: %s" Fpath.pp + Log.warn (fun m -> m "error reading job dir %a: %s" Fpath.pp Fpath.(t.dir // f) e); None) diff --git a/lib/model.mli b/lib/model.mli index 75cf186..11f5cef 100644 --- a/lib/model.mli +++ b/lib/model.mli @@ -26,4 +26,4 @@ val job_name : job -> string val read_full : t -> Fpath.t -> Fpath.t -> (job_run_info, [> `Msg of string ]) result val job : t -> Fpath.t -> (job, [> `Msg of string]) result -val jobs : t -> (job list, [> `Msg of string ]) result +val jobs : t -> (Fpath.t list, [> `Msg of string ]) result diff --git a/lib/views.ml b/lib/views.ml index 02d1707..38348a2 100644 --- a/lib/views.ml +++ b/lib/views.ml @@ -37,8 +37,8 @@ let builder jobs = ]; ul (List.map (fun job -> li [ - a ~a:[a_href ("job/" ^ Model.job_name job ^ "/")] - [txt (Model.job_name job)]; + a ~a:[a_href ("job/" ^ Fpath.to_string job ^ "/")] + [txt (Fpath.to_string job)]; ]) jobs); ]