Skip to content

Commit 5afb83e

Browse files
committed
API: Moved tilde expansion of filenames into dedicated function
1 parent 976455a commit 5afb83e

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

src/core/opamFilename.ml

+17-5
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,20 @@ module Dir = struct
3333
let equal = String.equal
3434

3535
let of_string dirname =
36+
OpamSystem.(real_path @@ forward_to_back dirname)
37+
38+
let of_string_resolved dirname =
39+
let home = OpamStd.Sys.home () in
40+
let prefix = "~" ^ Filename.dir_sep in
3641
let dirname =
37-
if dirname = "~" then OpamStd.Sys.home ()
42+
if dirname = "~" then home
3843
else if
39-
OpamStd.String.starts_with ~prefix:("~"^Filename.dir_sep) dirname
44+
OpamStd.String.starts_with ~prefix dirname
4045
then
41-
Filename.concat (OpamStd.Sys.home ())
42-
(OpamStd.String.remove_prefix ~prefix:("~"^Filename.dir_sep) dirname)
46+
Filename.concat home (OpamStd.String.remove_prefix ~prefix dirname)
4347
else dirname
4448
in
45-
OpamSystem.real_path (OpamSystem.forward_to_back dirname)
49+
of_string dirname
4650

4751
let to_string dirname = dirname
4852

@@ -188,6 +192,14 @@ let of_string s =
188192
basename = Base.of_string basename;
189193
}
190194

195+
let of_string_resolved s =
196+
let dirname = Filename.dirname s in
197+
let basename = Filename.basename s in
198+
{
199+
dirname = Dir.of_string_resolved dirname;
200+
basename = Base.of_string basename;
201+
}
202+
191203
let dirname t = t.dirname
192204

193205
let basename t = t.basename

src/core/opamFilename.mli

+9-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ module Base: sig
2424
end
2525

2626
(** Directory names *)
27-
module Dir: OpamStd.ABSTRACT
27+
module Dir: sig
28+
include OpamStd.ABSTRACT
29+
30+
(** Resolve tilde (~) into the home directory. *)
31+
val of_string_resolved: string -> t
32+
end
2833

2934
(** Return the current working directory *)
3035
val cwd: unit -> Dir.t
@@ -116,6 +121,9 @@ val create: Dir.t -> Base.t -> t
116121
as dirname *)
117122
val of_basename: Base.t -> t
118123

124+
(** Resolve tilde (~) into the home directory. *)
125+
val of_string_resolved: string -> t
126+
119127
(** Creation from a raw string, without resolving symlinks, etc. *)
120128
val raw: string -> t
121129

0 commit comments

Comments
 (0)