diff --git a/src/Cron.fs b/src/Cron.fs
index 8be832b..d2e1a2b 100644
--- a/src/Cron.fs
+++ b/src/Cron.fs
@@ -84,7 +84,7 @@ let private parse now (db: Requirements) =
else
Ok (splitted.[0], splitted.[1]))
- let executable = Which.which db.executable
+ let executable = Shell.which db.executable
let workdir = Path.of_string db.workdir |> Result.bind FileSystem.resolve
Result.zip when_ env
diff --git a/src/Jobs.fs b/src/Jobs.fs
deleted file mode 100644
index 86bc152..0000000
--- a/src/Jobs.fs
+++ /dev/null
@@ -1,5 +0,0 @@
-module Bidello.Jobs
-
-open Bidello.Datatypes
-
-open NodaTime
diff --git a/src/Library.fs b/src/Library.fs
index c63f833..f48fa40 100644
--- a/src/Library.fs
+++ b/src/Library.fs
@@ -70,7 +70,6 @@ type Bidello(client: IClusterClient) =
let timeout = next_job_at - now |> _.TotalMilliseconds |> floor |> int32
// printfn $"Waking up in: {timeout}|{next_job_at}"
let! _wake_up = db |> Database.wait_notification timeout ct
- // TODO: se il lavoro da fare, è già in esecuzione (e ancora non terminato, che fare?)
()
}
diff --git a/src/Which.fs b/src/Shell.fs
similarity index 65%
rename from src/Which.fs
rename to src/Shell.fs
index 3975db5..9b8970e 100644
--- a/src/Which.fs
+++ b/src/Shell.fs
@@ -1,9 +1,12 @@
-module Bidello.Which
+module Bidello.Shell
open Sheller
+
+open FSharp.Control.LazyExtensions
+
open Pentole.Path
-let which (executable: string) =
+let private shell_ () =
let possible_shells = [
"/bin/sh"
"/bin/bash"
@@ -15,12 +18,18 @@ let which (executable: string) =
"/usr/bin/fish"
]
- let shell = List.tryFind (fun sh -> sh |> Path.of_string |> Result.isOk) possible_shells
+ let error = Error "Can't find the system shell. Check your system $PATH."
+ List.tryFind (fun sh -> sh |> Path.of_string |> Result.isOk) possible_shells
+ |> Option.map Ok |> Option.defaultValue error
- if shell |> Option.isSome then
+
+let shell = Lazy.Create shell_
+
+let which (executable: string) =
+ let run (shell: string) =
let rc =
Builder
- .UseShell(shell.Value)
+ .UseShell(shell)
.UseExecutable("which")
.WithArgument(executable)
.UseNoThrow()
@@ -36,5 +45,6 @@ let which (executable: string) =
else
rc.StandardError
|> Error
- else
- Error "Can't find the system shell. Check your system $PATH."
+
+ shell.Value
+ |> Result.bind run
diff --git a/src/src.fsproj b/src/src.fsproj
index 081c662..03e87d2 100644
--- a/src/src.fsproj
+++ b/src/src.fsproj
@@ -13,13 +13,12 @@
-
+
-