Move Logarion's files in .logarion/ and perform OS ops with Bos
This commit is contained in:
parent
66c2d3cd2c
commit
9acf043870
@ -9,6 +9,7 @@ build: [
|
||||
]
|
||||
depends: [
|
||||
"jbuilder" {build}
|
||||
"bos"
|
||||
"toml"
|
||||
"uuidm"
|
||||
"omd"
|
||||
|
@ -4,7 +4,7 @@
|
||||
((name logarion_cli)
|
||||
(public_name logarion_cli)
|
||||
(modules logarion_cli)
|
||||
(libraries (logarion logarion.confix logarion.file lwt.unix re.str cmdliner))))
|
||||
(libraries (logarion logarion.confix logarion.file lwt.unix re.str cmdliner bos))))
|
||||
|
||||
(executable
|
||||
((name logarion_webserver)
|
||||
|
@ -15,29 +15,34 @@ let conf () =
|
||||
| Ok config -> config
|
||||
| Error str -> prerr_endline str; exit 1
|
||||
|
||||
let init =
|
||||
let f force =
|
||||
let repo = Lpath.string_of_repo @@ (conf ()).C.repository in
|
||||
let make_dir description d =
|
||||
let open Unix in
|
||||
try
|
||||
mkdir d 0o700;
|
||||
print_endline ("created " ^ description ^ ": " ^ d)
|
||||
with Unix_error (EEXIST, "mkdir", _) ->
|
||||
prerr_endline (description ^ " already exists: " ^ d);
|
||||
if Array.length (Sys.readdir repo) > 0 then prerr_endline ("warning: " ^ d ^ " is not empty")
|
||||
in
|
||||
make_dir "repository" repo
|
||||
let init force =
|
||||
let rec create_dirs = function
|
||||
| [] -> ()
|
||||
| (dir,descr)::tl ->
|
||||
match Bos.OS.Dir.create (Fpath.v dir) with
|
||||
| Ok true -> print_endline ("Created empty " ^ descr); create_dirs tl
|
||||
| Ok false -> print_endline ("Reinitialise existing " ^ descr); create_dirs tl
|
||||
| Error (`Msg msg) -> prerr_endline @@ "Failed making " ^ descr ^ ". " ^ msg
|
||||
in
|
||||
let dirs = [
|
||||
".logarion", "Logarion directory";
|
||||
".logarion/static", "static file directory";
|
||||
".logarion/html-templates", "template directory";
|
||||
]
|
||||
in
|
||||
create_dirs dirs
|
||||
|
||||
let init_term =
|
||||
let force =
|
||||
Arg.(value & flag & info ["f"; "force"] ~doc:"Initialise repository even if directory is non empty")
|
||||
let doc = "Initialise repository even if directory is non empty" in
|
||||
Arg.(value & flag & info ["f"; "force"] ~doc)
|
||||
in
|
||||
Term.(const f $ force),
|
||||
Term.(const init $ force),
|
||||
Term.info
|
||||
"init" ~doc:"initialise a logarion repository in present directory"
|
||||
~man:[ `S "DESCRIPTION"; `P "Create a repository in current directory" ]
|
||||
|
||||
let create =
|
||||
let create_term =
|
||||
let title =
|
||||
Arg.(value & pos 0 string "" & info [] ~docv:"TITLE" ~doc:"Title for new article")
|
||||
in
|
||||
@ -59,7 +64,7 @@ let default_cmd =
|
||||
Term.info "logarion" ~version:"0.1.0" ~doc:"an article collection & publishing system"
|
||||
~man:[ `S "BUGS"; `P "Submit bugs https://gitlab.com/orbifx/logarion/issues/new."; ]
|
||||
|
||||
let cmds = [ init; create ]
|
||||
let cmds = [ init_term; create_term ]
|
||||
|
||||
let () = match Term.eval_choice default_cmd cmds with
|
||||
| `Error _ -> exit 1 | _ -> exit 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user