diff --git a/lib/cli.ml b/lib/cli.ml index e1fcd36..6e4a9ee 100644 --- a/lib/cli.ml +++ b/lib/cli.ml @@ -11,7 +11,7 @@ let path_arg = & opt string "." & info [ "d"; "directory" ] ~docv:"DIRECTORY_PATH" ~doc) -let gh_tui_t = Term.(const Tui.App.start $ repo_arg $ path_arg) +let gh_tui_term = Term.(const Tui.App.start $ repo_arg $ path_arg) let cmd = let doc = "TUI of a GitHub repository" in @@ -22,4 +22,4 @@ let cmd = ] in let info = Cmd.info "gh-tui" ~version:"0.1.0" ~doc ~man in - Cmd.v info gh_tui_t + Cmd.v info gh_tui_term diff --git a/lib/tui/app.ml b/lib/tui/app.ml index c355548..9cb1927 100644 --- a/lib/tui/app.ml +++ b/lib/tui/app.ml @@ -1,11 +1,14 @@ -let app = Minttea.app ~init:Init.init ~update:Update.update ~view:View.view () - -let start repo path = +let init ~repo ~path : Model.initial_data = let tree = Fs.read_tree path in match tree with | Fs.File path -> Printf.printf "Given path '%s' is not a directory!" path; exit 1 - | Fs.Dir (dirname, files) -> - let initial_model = Model.initial_model ~repo ~dirname ~files in - Minttea.start app ~initial_model + | Fs.Dir (dirname, files) -> { repo; dirname; files } + +let app = Minttea.app ~init:Init.init ~update:Update.update ~view:View.view () + +let start repo path = + let initial_data = init ~repo ~path in + let initial_model = Model.initial_model initial_data in + Minttea.start app ~initial_model diff --git a/lib/tui/model.ml b/lib/tui/model.ml index 65be754..a0060cf 100644 --- a/lib/tui/model.ml +++ b/lib/tui/model.ml @@ -16,5 +16,11 @@ type t = { code_tab : code_tab; } -let initial_model ~repo ~dirname ~files = +type initial_data = { + repo : string; + dirname : string; + files : Fs.tree array; +} + +let initial_model { repo; dirname; files } = { repo; current_tab = Code; code_tab = { dirname; fs = Fs.zip_it files } }