shell.ml 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. (* https://caml.inria.fr/pub/docs/manual-ocaml/libref/Sys.html *)
  2. let hello () =
  3. Cgi.w "🌺 At first check if we really have no commandline arguments.";
  4. let argc = Array.length Sys.argv in
  5. for i = 0 to argc - 1 do
  6. Printf.printf "[%i] '%s'\n" i Sys.argv.(i)
  7. done;
  8. let cwd = Sys.getcwd () in
  9. Cgi.w cwd;
  10. let prg = Sys.executable_name in
  11. Cgi.w prg;
  12. (* printf "cwd: '%s'\n" Sys.getcwd (); *)
  13. 0
  14. let load_or_create_feed_file f =
  15. match Sys.file_exists f with
  16. | false -> Error [f; "No such file or directory"]
  17. (* http://cumulus.github.io/Syndic/syndic/Syndic__/Syndic_atom/index.html#val-read *)
  18. | true -> try Ok (Syndic.Atom.read f) with
  19. | Not_found -> Error ["read"; f; "not found"]
  20. | Syndic__Syndic_error.Error(_,msg) -> Error ["read"; f; msg; "at pos";
  21. "?.?"]
  22. | e -> let msg = Printexc.to_string e in
  23. Error ["read"; f; "exception"; msg]
  24. (* load *)
  25. (* if fails
  26. * create new only if file doesn't exist *)
  27. let run_argc0 exe =
  28. let name = String.concat Filename.dir_sep ["app"; "var"; "o.atom"] in
  29. let sep = ": " in
  30. match load_or_create_feed_file name with
  31. | Ok f ->
  32. begin match f.title with
  33. | Text (t) ->
  34. prerr_endline t;
  35. 0
  36. | _ ->
  37. let lst = [exe; "das kommt jetzt etwas überraschend."] in
  38. let msg = String.concat sep lst in
  39. prerr_endline msg;
  40. 3
  41. end
  42. | Error e ->
  43. let lst = List.cons exe e in
  44. let msg = String.concat sep lst in
  45. prerr_endline msg;
  46. 1
  47. let run () =
  48. (* prerr_endline Version.git_sha; *)
  49. let exe = Filename.basename Sys.executable_name in
  50. let sep = ": " in
  51. match Array.length Sys.argv with
  52. | 1 ->
  53. run_argc0 exe
  54. | _ ->
  55. let lst = [exe; "I don't accept commandline parameters"] in
  56. let msg = String.concat sep lst in
  57. prerr_endline msg;
  58. 2