Initial import of LogDarioSeq baseline
Establishes version control for the personal Logseq DB fork before starting the server-client architecture migration and domain features described in docs/agent-guide and the approved implementation plan. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
58
cli/bin/main.ml
Normal file
58
cli/bin/main.ml
Normal file
@@ -0,0 +1,58 @@
|
||||
open Cli_effect.Infix
|
||||
|
||||
let cli_argv () =
|
||||
let process_argv = Cli_platform.argv () in
|
||||
let len = Array.length process_argv in
|
||||
let args = if len <= 2 then [||] else Array.sub process_argv 2 (len - 2) in
|
||||
Vec.of_array args
|
||||
|
||||
let cli_env () =
|
||||
Cli_unix.environment () |> Vec.of_array
|
||||
|> Vec.filter_map (fun item ->
|
||||
match String.index_opt item '=' with
|
||||
| None -> None
|
||||
| Some index ->
|
||||
let key = String.sub item 0 index in
|
||||
let value =
|
||||
String.sub item (index + 1) (String.length item - index - 1)
|
||||
in
|
||||
Some (key, value))
|
||||
|
||||
let cli_input () =
|
||||
{
|
||||
Cli.argv = cli_argv ();
|
||||
env = cli_env ();
|
||||
cwd = Sys.getcwd ();
|
||||
stdin = None;
|
||||
}
|
||||
|
||||
let finalize_error err = Cli.final_effect (Cli.make_error_state err)
|
||||
|
||||
let run app input =
|
||||
let raw = Cli.make_raw_argv_state app input in
|
||||
match Cli.parse_args app raw with
|
||||
| Error err -> finalize_error err
|
||||
| Ok parsed -> (
|
||||
Cli.resolve_config app parsed >>= function
|
||||
| Error err -> finalize_error err
|
||||
| Ok resolved -> (
|
||||
Cli.build_action app resolved >>= function
|
||||
| Error err -> finalize_error err
|
||||
| Ok built -> (
|
||||
Cli.execute_action app built >>= function
|
||||
| Error err -> finalize_error err
|
||||
| Ok executed -> Cli.final_effect executed)))
|
||||
|
||||
let () =
|
||||
let complete code = if code <> 0 then exit code in
|
||||
let fail exn =
|
||||
prerr_endline (Printexc.to_string exn);
|
||||
exit 1
|
||||
in
|
||||
let task =
|
||||
try
|
||||
let app = Cli.make_app_context () in
|
||||
run app (cli_input ())
|
||||
with exn -> Cli_effect.error exn
|
||||
in
|
||||
Cli_effect.on_any task complete fail
|
||||
Reference in New Issue
Block a user