Skip to content

Commit

Permalink
Don’t fail even OPAM executive does not exist
Browse files Browse the repository at this point in the history
  • Loading branch information
na4zagin3 committed Apr 18, 2019
1 parent eaf14c8 commit 503aeef
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 16 deletions.
32 changes: 20 additions & 12 deletions bin/main.ml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,10 @@ let () =
let repo = Repository.read repository_dir metadata_file
let reg = Registory.read package_dir repo metadata_file
let reg_opam =
let opam_share_dir = SatysfiDirs.opam_share_dir () in
Printf.printf "opam share dir: %s\n" opam_share_dir;
{SatysfiRegistory.package_dir=Filename.concat opam_share_dir "satysfi"}
SatysfiDirs.opam_share_dir ()
|> Option.map ~f:(fun opam_share_dir ->
Printf.printf "opam share dir: %s\n" opam_share_dir;
{SatysfiRegistory.package_dir=Filename.concat opam_share_dir "satysfi"})

let status () =
printf "scheme version: ";
Expand Down Expand Up @@ -178,17 +179,21 @@ let package_command =

let package_opam_list () =
compatibility_optin ();
[%derive.show: string list] (SatysfiRegistory.list reg_opam) |> print_endline
Option.iter reg_opam ~f:(fun reg_opam ->
[%derive.show: string list] (SatysfiRegistory.list reg_opam) |> print_endline
)
let package_opam_list_command =
package_list_command_g package_opam_list

let package_opam_show p () =
compatibility_optin ();
SatysfiRegistory.directory reg_opam p
|> Package.read_dir
|> [%sexp_of: Package.t]
|> Sexp.to_string_hum
|> print_endline
Option.iter reg_opam ~f:(fun reg_opam ->
SatysfiRegistory.directory reg_opam p
|> Package.read_dir
|> [%sexp_of: Package.t]
|> Sexp.to_string_hum
|> print_endline
)
let package_opam_show_command =
package_show_command_g package_opam_show

Expand Down Expand Up @@ -224,9 +229,12 @@ let install d ~system_font_prefix ~verbose ~copy () =
let user_packages = Registory.list reg
|> List.map ~f:(Registory.directory reg)
in
let opam_packages = SatysfiRegistory.list reg_opam
|> List.filter ~f:(fun name -> String.equal "dist" name |> not)
|> List.map ~f:(SatysfiRegistory.directory reg_opam)
let opam_packages = match reg_opam with
| None -> []
| Some reg_opam ->
SatysfiRegistory.list reg_opam
|> List.filter ~f:(fun name -> String.equal "dist" name |> not)
|> List.map ~f:(SatysfiRegistory.directory reg_opam)
in
let packages = dist_package :: List.append user_packages opam_packages
|> List.map ~f:Package.read_dir
Expand Down
22 changes: 18 additions & 4 deletions src/satysfiDirs.ml
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,26 @@ let is_runtime_dir dir =
FileUtil.(test Is_dir) (Filename.concat dir "packages")

let opam_share_dir () =
Unix.open_process_in "opam var share"
|> In_channel.input_all
|> String.strip
try
Unix.open_process_in "opam var share"
|> In_channel.input_all
|> String.strip
|> begin function
| "" -> None
| x -> Some x
end
with
Failure x ->
print_endline "Failed to get opam directory.";
print_endline x;
None

let option_to_list = function
| Some x -> [x]
| None -> []

let satysfi_dist_dir () =
let shares = [opam_share_dir (); "/usr/local/share"; "/usr/share"] in
let shares = option_to_list (opam_share_dir ()) @ ["/usr/local/share"; "/usr/share"] in
let dist_dirs = List.map shares ~f:(fun d -> Filename.concat d "satysfi" |> (fun d -> Filename.concat d "dist")) in
let rec f = function
| [] -> failwith "Can't find SATySFi lib. Please install it."
Expand Down

0 comments on commit 503aeef

Please sign in to comment.