summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rebar_dialyzer_format.erl2
-rw-r--r--src/rebar_dir.erl2
-rw-r--r--src/rebar_file_utils.erl2
-rw-r--r--src/rebar_git_resource.erl19
-rw-r--r--src/rebar_hg_resource.erl20
-rw-r--r--src/rebar_hooks.erl2
-rw-r--r--src/rebar_packages.erl2
-rw-r--r--src/rebar_pkg_resource.erl8
-rw-r--r--src/rebar_prv_app_discovery.erl2
-rw-r--r--src/rebar_prv_bare_compile.erl2
-rw-r--r--src/rebar_prv_common_test.erl2
-rw-r--r--src/rebar_prv_dialyzer.erl2
-rw-r--r--src/rebar_prv_eunit.erl3
-rw-r--r--src/rebar_prv_local_upgrade.erl2
-rw-r--r--src/rebar_prv_path.erl4
-rw-r--r--src/rebar_prv_shell.erl2
-rw-r--r--src/rebar_relx.erl2
-rw-r--r--src/rebar_string.erl41
-rw-r--r--src/rebar_templater.erl3
-rw-r--r--src/rebar_utils.erl13
20 files changed, 89 insertions, 46 deletions
diff --git a/src/rebar_dialyzer_format.erl b/src/rebar_dialyzer_format.erl
index 7cf4e63..5583633 100644
--- a/src/rebar_dialyzer_format.erl
+++ b/src/rebar_dialyzer_format.erl
@@ -427,4 +427,4 @@ separate_args(D, [C | R], Arg, Args) ->
separate_args(D, R, [C | Arg], Args).
join_args(Args) ->
- [$(, string:join(Args, ", "), $)].
+ [$(, rebar_string:join(Args, ", "), $)].
diff --git a/src/rebar_dir.erl b/src/rebar_dir.erl
index 7182c10..d7be423 100644
--- a/src/rebar_dir.erl
+++ b/src/rebar_dir.erl
@@ -49,7 +49,7 @@ profile_dir(Opts, Profiles) ->
%% of profiles to match order passed to `as`
["default"|Rest] -> {rebar_opts:get(Opts, base_dir, ?DEFAULT_BASE_DIR), Rest}
end,
- ProfilesDir = string:join(ProfilesStrings, "+"),
+ ProfilesDir = rebar_string:join(ProfilesStrings, "+"),
filename:join(BaseDir, ProfilesDir).
%% @doc returns the directory where dependencies should be placed
diff --git a/src/rebar_file_utils.erl b/src/rebar_file_utils.erl
index b0755ed..7a48a6a 100644
--- a/src/rebar_file_utils.erl
+++ b/src/rebar_file_utils.erl
@@ -190,7 +190,7 @@ cp_r(Sources, Dest) ->
case os:type() of
{unix, _} ->
EscSources = [rebar_utils:escape_chars(Src) || Src <- Sources],
- SourceStr = string:join(EscSources, " "),
+ SourceStr = rebar_string:join(EscSources, " "),
{ok, []} = rebar_utils:sh(?FMT("cp -Rp ~ts \"~ts\"",
[SourceStr, rebar_utils:escape_double_quotes(Dest)]),
[{use_stdout, false}, abort_on_error]),
diff --git a/src/rebar_git_resource.erl b/src/rebar_git_resource.erl
index 2855dd0..ea77b89 100644
--- a/src/rebar_git_resource.erl
+++ b/src/rebar_git_resource.erl
@@ -28,7 +28,7 @@ lock(AppDir, {git, Url}) ->
rebar_utils:sh("git --git-dir=\"" ++ Dir ++ "/.git\" rev-parse --verify HEAD",
[{use_stdout, false}, {debug_abort_on_error, AbortMsg}])
end,
- Ref = string:strip(VsnString, both, $\n),
+ Ref = rebar_string:trim(VsnString, both, "\n"),
{git, Url, {ref, Ref}}.
%% Return true if either the git url or tag/branch/ref is not the same as the currently
@@ -36,8 +36,8 @@ lock(AppDir, {git, Url}) ->
needs_update(Dir, {git, Url, {tag, Tag}}) ->
{ok, Current} = rebar_utils:sh(?FMT("git describe --tags --exact-match", []),
[{cd, Dir}]),
- Current1 = string:strip(string:strip(Current, both, $\n), both, $\r),
-
+ Current1 = rebar_string:trim(rebar_string:trim(Current, both, "\n"),
+ both, "\r"),
?DEBUG("Comparing git tag ~ts with ~ts", [Tag, Current1]),
not ((Current1 =:= Tag) andalso compare_url(Dir, Url));
needs_update(Dir, {git, Url, {branch, Branch}}) ->
@@ -55,8 +55,8 @@ needs_update(Dir, {git, Url, "master"}) ->
needs_update(Dir, {git, _, Ref}) ->
{ok, Current} = rebar_utils:sh(?FMT("git rev-parse --short=7 -q HEAD", []),
[{cd, Dir}]),
- Current1 = string:strip(string:strip(Current, both, $\n), both, $\r),
-
+ Current1 = rebar_string:trim(rebar_string:trim(Current, both, "\n"),
+ both, "\r"),
Ref2 = case Ref of
{ref, Ref1} ->
Length = length(Current1),
@@ -74,7 +74,8 @@ needs_update(Dir, {git, _, Ref}) ->
compare_url(Dir, Url) ->
{ok, CurrentUrl} = rebar_utils:sh(?FMT("git config --get remote.origin.url", []),
[{cd, Dir}]),
- CurrentUrl1 = string:strip(string:strip(CurrentUrl, both, $\n), both, $\r),
+ CurrentUrl1 = rebar_string:trim(rebar_string:trim(CurrentUrl, both, "\n"),
+ both, "\r"),
{ok, ParsedUrl} = parse_git_url(Url),
{ok, ParsedCurrentUrl} = parse_git_url(CurrentUrl1),
?DEBUG("Comparing git url ~p with ~p", [ParsedUrl, ParsedCurrentUrl]),
@@ -215,7 +216,7 @@ collect_default_refcount(Dir) ->
?WARN("Getting log of git dependency failed in ~ts. Falling back to version 0.0.0", [rebar_dir:get_cwd()]),
{plain, "0.0.0"};
{ok, String} ->
- RawRef = string:strip(String, both, $\n),
+ RawRef = rebar_string:trim(String, both, "\n"),
{Tag, TagVsn} = parse_tags(Dir),
{ok, RawCount} =
@@ -275,9 +276,9 @@ parse_tags(Dir) ->
{undefined, "0.0.0"};
%% strip the v prefix if it exists like is done in the above match
{ok, [$v | LatestVsn]} ->
- {undefined, string:strip(LatestVsn, both, $\n)};
+ {undefined, rebar_string:trim(LatestVsn, both, "\n")};
{ok, LatestVsn} ->
- {undefined, string:strip(LatestVsn, both, $\n)}
+ {undefined, rebar_string:trim(LatestVsn,both, "\n")}
end
end
end.
diff --git a/src/rebar_hg_resource.erl b/src/rebar_hg_resource.erl
index 0a77c1f..6d25783 100644
--- a/src/rebar_hg_resource.erl
+++ b/src/rebar_hg_resource.erl
@@ -96,7 +96,7 @@ make_vsn(Dir) ->
{ok, VsnString} =
rebar_utils:sh(Cmd,
[{use_stdout, false}, {debug_abort_on_error, AbortMsg}]),
- RawVsn = string:strip(VsnString, both, $\n),
+ RawVsn = rebar_string:trim(VsnString, both, "\n"),
Vsn = case RawVsn of
"null+" ++ Rest -> "0.0.0+" ++ Rest;
@@ -107,8 +107,8 @@ make_vsn(Dir) ->
%%% Internal functions
compare_url(Dir, Url) ->
- CurrentUrl = string:strip(os:cmd("hg -R \"" ++ rebar_utils:escape_double_quotes(Dir) ++"\" paths default"), both, $\n),
- CurrentUrl1 = string:strip(CurrentUrl, both, $\r),
+ CurrentUrl = rebar_string:trim(os:cmd("hg -R \"" ++ rebar_utils:escape_double_quotes(Dir) ++"\" paths default"), both, "\n"),
+ CurrentUrl1 = rebar_string:trim(CurrentUrl, both, "\r"),
parse_hg_url(CurrentUrl1) =:= parse_hg_url(Url).
get_ref(Dir) ->
@@ -116,7 +116,7 @@ get_ref(Dir) ->
{ok, RefString} =
rebar_utils:sh("hg -R \"" ++ rebar_utils:escape_double_quotes(Dir) ++ "\" --debug id -i",
[{use_stdout, false}, {debug_abort_on_error, AbortMsg}]),
- string:strip(RefString, both, $\n).
+ rebar_string:trim(RefString, both, "\n").
get_tag_distance(Dir, Ref) ->
AbortMsg = io_lib:format("Get tag distance of hg dependency failed in ~ts", [Dir]),
@@ -125,8 +125,8 @@ get_tag_distance(Dir, Ref) ->
"log --template \"{latesttag}-{latesttagdistance}\n\" "
"--rev " ++ rebar_utils:escape_chars(Ref),
[{use_stdout, false}, {debug_abort_on_error, AbortMsg}]),
- Log = string:strip(LogString,
- both, $\n),
+ Log = rebar_string:trim(LogString,
+ both, "\n"),
[Tag, Distance] = re:split(Log, "-([0-9]+)$",
[{parts,0}, {return,list}, unicode]),
{Tag, Distance}.
@@ -137,7 +137,7 @@ get_branch_ref(Dir, Branch) ->
rebar_utils:sh("hg -R \"" ++ rebar_utils:escape_double_quotes(Dir) ++
"\" log --template \"{node}\n\" --rev " ++ rebar_utils:escape_chars(Branch),
[{use_stdout, false}, {debug_abort_on_error, AbortMsg}]),
- string:strip(BranchRefString, both, $\n).
+ rebar_string:strip(BranchRefString, both, "\n").
maybe_warn_local_url(Url) ->
@@ -150,11 +150,11 @@ maybe_warn_local_url(Url) ->
end.
parse_hg_url("ssh://" ++ HostPath) ->
- [Host | Path] = string:tokens(HostPath, "/"),
+ [Host | Path] = rebar_string:lexemes(HostPath, "/"),
{Host, filename:rootname(filename:join(Path), ".hg")};
parse_hg_url("http://" ++ HostPath) ->
- [Host | Path] = string:tokens(HostPath, "/"),
+ [Host | Path] = rebar_string:lexemes(HostPath, "/"),
{Host, filename:rootname(filename:join(Path), ".hg")};
parse_hg_url("https://" ++ HostPath) ->
- [Host | Path] = string:tokens(HostPath, "/"),
+ [Host | Path] = rebar_string:lexemes(HostPath, "/"),
{Host, filename:rootname(filename:join(Path), ".hg")}.
diff --git a/src/rebar_hooks.erl b/src/rebar_hooks.erl
index 48aa928..8893f2a 100644
--- a/src/rebar_hooks.erl
+++ b/src/rebar_hooks.erl
@@ -140,7 +140,7 @@ create_env(State, Opts) ->
].
join_dirs(BaseDir, Dirs) ->
- string:join([ filename:join(BaseDir, Dir) || Dir <- Dirs ], ":").
+ rebar_string:join([filename:join(BaseDir, Dir) || Dir <- Dirs], ":").
re_version(Path) ->
case re:run(Path, "^.*-(?<VER>[^/-]*)$", [{capture,[1],list}, unicode]) of
diff --git a/src/rebar_packages.erl b/src/rebar_packages.erl
index cba1d16..d17b54f 100644
--- a/src/rebar_packages.erl
+++ b/src/rebar_packages.erl
@@ -102,7 +102,7 @@ registry_dir(State) ->
case rebar_utils:url_append_path(CDN, ?REMOTE_PACKAGE_DIR) of
{ok, Parsed} ->
{ok, {_, _, Host, _, Path, _}} = http_uri:parse(Parsed),
- CDNHostPath = lists:reverse(string:tokens(Host, ".")),
+ CDNHostPath = lists:reverse(rebar_string:lexemes(Host, ".")),
CDNPath = tl(filename:split(Path)),
RegistryDir = filename:join([CacheDir, "hex"] ++ CDNHostPath ++ CDNPath),
ok = filelib:ensure_dir(filename:join(RegistryDir, "placeholder")),
diff --git a/src/rebar_pkg_resource.erl b/src/rebar_pkg_resource.erl
index d588f24..60ad8f9 100644
--- a/src/rebar_pkg_resource.erl
+++ b/src/rebar_pkg_resource.erl
@@ -98,7 +98,7 @@ extract(TmpDir, CachePath) ->
checksums(Pkg={pkg, _Name, _Vsn, Hash}, Files, Contents, Version, Meta, State) ->
Blob = <<Version/binary, Meta/binary, Contents/binary>>,
<<X:256/big-unsigned>> = crypto:hash(sha256, Blob),
- BinChecksum = list_to_binary(string:to_upper(lists:flatten(io_lib:format("~64.16.0b", [X])))),
+ BinChecksum = list_to_binary(rebar_string:uppercase(lists:flatten(io_lib:format("~64.16.0b", [X])))),
RegistryChecksum = rebar_packages:registry_checksum(Pkg, State),
{"CHECKSUM", TarChecksum} = lists:keyfind("CHECKSUM", 1, Files),
{Hash, BinChecksum, RegistryChecksum, TarChecksum}.
@@ -116,7 +116,7 @@ request(Url, ETag) ->
{ok, {{_Version, 200, _Reason}, Headers, Body}} ->
?DEBUG("Successfully downloaded ~ts", [Url]),
{"etag", ETag1} = lists:keyfind("etag", 1, Headers),
- {ok, Body, string:strip(ETag1, both, $")};
+ {ok, Body, rebar_string:trim(ETag1, both, [$"])};
{ok, {{_Version, 304, _Reason}, _Headers, _Body}} ->
?DEBUG("Cached copy of ~ts still valid", [Url]),
{ok, cached};
@@ -132,7 +132,7 @@ etag(Path) ->
case file:read_file(Path) of
{ok, Binary} ->
<<X:128/big-unsigned-integer>> = crypto:hash(md5, Binary),
- string:to_lower(lists:flatten(io_lib:format("~32.16.0b", [X])));
+ rebar_string:lowercase(lists:flatten(io_lib:format("~32.16.0b", [X])));
{error, _} ->
false
end.
@@ -205,7 +205,7 @@ get_ssl_config() ->
end.
parse_vsn(Vsn) ->
- version_pad(string:tokens(Vsn, ".-")).
+ version_pad(rebar_string:lexemes(Vsn, ".-")).
version_pad([Major]) ->
{list_to_integer(Major), 0, 0};
diff --git a/src/rebar_prv_app_discovery.erl b/src/rebar_prv_app_discovery.erl
index 3f10a3f..f5bab49 100644
--- a/src/rebar_prv_app_discovery.erl
+++ b/src/rebar_prv_app_discovery.erl
@@ -49,7 +49,7 @@ do(State) ->
-spec format_error(any()) -> iolist().
format_error({multiple_app_files, Files}) ->
- io_lib:format("Multiple app files found in one app dir: ~ts", [string:join(Files, " and ")]);
+ io_lib:format("Multiple app files found in one app dir: ~ts", [rebar_string:join(Files, " and ")]);
format_error({invalid_app_file, File, Reason}) ->
case Reason of
{Line, erl_parse, Description} ->
diff --git a/src/rebar_prv_bare_compile.erl b/src/rebar_prv_bare_compile.erl
index 6f1ac16..c29a711 100644
--- a/src/rebar_prv_bare_compile.erl
+++ b/src/rebar_prv_bare_compile.erl
@@ -42,7 +42,7 @@ do(State) ->
Paths = proplists:get_value(paths, RawOpts),
Sep = proplists:get_value(separator, RawOpts, " "),
[ code:add_pathsa(filelib:wildcard(PathWildcard))
- || PathWildcard <- string:tokens(Paths, Sep) ],
+ || PathWildcard <- rebar_string:lexemes(Paths, Sep) ],
[AppInfo] = rebar_state:project_apps(State),
AppInfo1 = rebar_app_info:out_dir(AppInfo, rebar_dir:get_cwd()),
diff --git a/src/rebar_prv_common_test.erl b/src/rebar_prv_common_test.erl
index bf788d2..2443710 100644
--- a/src/rebar_prv_common_test.erl
+++ b/src/rebar_prv_common_test.erl
@@ -173,7 +173,7 @@ transform_opts([Opt|Rest], Acc) ->
transform_opts(Rest, [Opt|Acc]).
split_string(String) ->
- string:tokens(String, [$,]).
+ rebar_string:lexemes(String, [$,]).
cfgopts(State) ->
case rebar_state:get(State, ct_opts, []) of
diff --git a/src/rebar_prv_dialyzer.erl b/src/rebar_prv_dialyzer.erl
index a74eefb..99a7698 100644
--- a/src/rebar_prv_dialyzer.erl
+++ b/src/rebar_prv_dialyzer.erl
@@ -565,7 +565,7 @@ collect_nested_dependent_apps(App, Seen) ->
dialyzer_version() ->
_ = application:load(dialyzer),
{ok, Vsn} = application:get_key(dialyzer, vsn),
- case string:tokens(Vsn, ".") of
+ case rebar_string:lexemes(Vsn, ".") of
[Major, Minor] ->
version_tuple(Major, Minor, "0");
[Major, Minor, Patch | _] ->
diff --git a/src/rebar_prv_eunit.erl b/src/rebar_prv_eunit.erl
index 65addc3..2361432 100644
--- a/src/rebar_prv_eunit.erl
+++ b/src/rebar_prv_eunit.erl
@@ -141,7 +141,8 @@ resolve(Flag, RawOpts) -> resolve(Flag, Flag, RawOpts).
resolve(Flag, EUnitKey, RawOpts) ->
case proplists:get_value(Flag, RawOpts) of
undefined -> [];
- Args -> lists:map(fun(Arg) -> normalize(EUnitKey, Arg) end, string:tokens(Args, [$,]))
+ Args -> lists:map(fun(Arg) -> normalize(EUnitKey, Arg) end,
+ rebar_string:lexemes(Args, [$,]))
end.
normalize(Key, Value) when Key == dir; Key == file -> {Key, Value};
diff --git a/src/rebar_prv_local_upgrade.erl b/src/rebar_prv_local_upgrade.erl
index aa9ee44..1ac3adb 100644
--- a/src/rebar_prv_local_upgrade.erl
+++ b/src/rebar_prv_local_upgrade.erl
@@ -72,7 +72,7 @@ get_md5(Rebar3Path) ->
{ok, Rebar3File} = file:read_file(Rebar3Path),
Digest = crypto:hash(md5, Rebar3File),
DigestHex = lists:flatten([io_lib:format("~2.16.0B", [X]) || X <- binary_to_list(Digest)]),
- string:to_lower(DigestHex).
+ rebar_string:lowercase(DigestHex).
maybe_fetch_rebar3(Rebar3Md5) ->
TmpDir = ec_file:insecure_mkdtemp(),
diff --git a/src/rebar_prv_path.erl b/src/rebar_prv_path.erl
index 75d38eb..5374b0c 100644
--- a/src/rebar_prv_path.erl
+++ b/src/rebar_prv_path.erl
@@ -49,7 +49,7 @@ format_error(Reason) ->
filter_apps(RawOpts, State) ->
RawApps = proplists:get_all_values(app, RawOpts),
- Apps = lists:foldl(fun(String, Acc) -> string:tokens(String, ",") ++ Acc end, [], RawApps),
+ Apps = lists:foldl(fun(String, Acc) -> rebar_string:lexemes(String, ",") ++ Acc end, [], RawApps),
case Apps of
[] ->
ProjectDeps = project_deps(State),
@@ -91,7 +91,7 @@ print_paths_if_exist(Paths, State) ->
{RawOpts, _} = rebar_state:command_parsed_args(State),
Sep = proplists:get_value(separator, RawOpts, " "),
RealPaths = lists:filter(fun(P) -> ec_file:is_dir(P) end, Paths),
- io:format("~ts", [string:join(RealPaths, Sep)]).
+ io:format("~ts", [rebar_string:join(RealPaths, Sep)]).
project_deps(State) ->
Profiles = rebar_state:current_profiles(State),
diff --git a/src/rebar_prv_shell.erl b/src/rebar_prv_shell.erl
index 0244833..47e0366 100644
--- a/src/rebar_prv_shell.erl
+++ b/src/rebar_prv_shell.erl
@@ -307,7 +307,7 @@ find_apps_option(State) ->
no_value -> no_value;
AppsStr ->
[ list_to_atom(AppStr)
- || AppStr <- string:tokens(AppsStr, " ,:") ]
+ || AppStr <- rebar_string:lexemes(AppsStr, " ,:") ]
end.
-spec find_apps_rebar(rebar_state:t()) -> no_value | list().
diff --git a/src/rebar_relx.erl b/src/rebar_relx.erl
index 17c0bd6..4548761 100644
--- a/src/rebar_relx.erl
+++ b/src/rebar_relx.erl
@@ -27,7 +27,7 @@ do(Module, Command, Provider, State) ->
LibDirs = rebar_utils:filtermap(fun ec_file:exists/1,
[rebar_dir:checkouts_dir(State), DepsDir | ProjectAppDirs]),
OutputDir = filename:join(rebar_dir:base_dir(State), ?DEFAULT_RELEASE_DIR),
- AllOptions = string:join([Command | Options], " "),
+ AllOptions = rebar_string:join([Command | Options], " "),
Cwd = rebar_state:dir(State),
Providers = rebar_state:providers(State),
RebarOpts = rebar_state:opts(State),
diff --git a/src/rebar_string.erl b/src/rebar_string.erl
new file mode 100644
index 0000000..c1858f9
--- /dev/null
+++ b/src/rebar_string.erl
@@ -0,0 +1,41 @@
+%%% @doc Compatibility module for string functionality
+%%% for pre- and post-unicode support.
+-module(rebar_string).
+-export([join/2, lexemes/2, trim/3, uppercase/1, lowercase/1, chr/2]).
+
+-ifdef(unicode_str).
+
+%% string:join/2 copy; string:join/2 is getting obsoleted
+%% and replaced by lists:join/2, but lists:join/2 is too new
+%% for version support (only appeared in 19.0) so it cannot be
+%% used. Instead we just adopt join/2 locally and hope it works
+%% for most unicode use cases anyway.
+join([], Sep) when is_list(Sep) ->
+ [];
+join([H|T], Sep) ->
+ H ++ lists:append([Sep ++ X || X <- T]).
+
+lexemes(Str, SepList) -> string:lexemes(Str, SepList).
+trim(Str, Direction, Cluster=[_]) -> string:trim(Str, Direction, Cluster).
+uppercase(Str) -> string:uppercase(Str).
+lowercase(Str) -> string:lowercase(Str).
+
+chr(S, C) when is_integer(C) -> chr(S, C, 1).
+chr([C|_Cs], C, I) -> I;
+chr([_|Cs], C, I) -> chr(Cs, C, I+1);
+chr([], _C, _I) -> 0.
+-else.
+
+join(Strings, Separator) -> string:join(Strings, Separator).
+lexemes(Str, SepList) -> string:tokens(Str, SepList).
+trim(Str, Direction, [Char]) ->
+ Dir = case Direction of
+ both -> both;
+ leading -> left;
+ trailing -> right
+ end,
+ string:strip(Str, Dir, Char).
+uppercase(Str) -> string:to_upper(Str).
+lowercase(Str) -> string:to_lower(Str).
+chr(Str, Char) -> string:chr(Str, Char).
+-endif.
diff --git a/src/rebar_templater.erl b/src/rebar_templater.erl
index 75190ec..929ca47 100644
--- a/src/rebar_templater.erl
+++ b/src/rebar_templater.erl
@@ -120,7 +120,8 @@ default_author_and_email() ->
{ok, Name} ->
case rebar_utils:sh("git config --global user.email", [return_on_error]) of
{ok, Email} ->
- {string:strip(Name, both, $\n), string:strip(Email, both, $\n)};
+ {rebar_string:trim(Name, both, "\n"),
+ rebar_string:trim(Email, both, "\n")};
{error, _} ->
%% Use neither if one doesn't exist
{"Anonymous", "anonymous@example.org"}
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index ee8f179..5ea0452 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -391,7 +391,7 @@ compare({Priority, A}, {Secondary, B}) when not is_tuple(A), is_tuple(B) ->
%% Implements wc -l functionality used to determine patchcount from git output
line_count(PatchLines) ->
- Tokenized = string:tokens(PatchLines, "\n"),
+ Tokenized = rebar_string:lexemes(PatchLines, "\n"),
{ok, length(Tokenized)}.
check_min_otp_version(undefined) ->
@@ -528,7 +528,7 @@ patch_on_windows(Cmd, Env) ->
%% The end of form `$FOO' is delimited with whitespace or EOL
-spec expand_env_variable(string(), string(), term()) -> string().
expand_env_variable(InStr, VarName, RawVarValue) ->
- case string:chr(InStr, $$) of
+ case rebar_string:chr(InStr, $$) of
0 ->
%% No variables to expand
InStr;
@@ -622,7 +622,7 @@ sh_loop(Port, Fun, Acc) ->
beam_to_mod(Dir, Filename) ->
[Dir | Rest] = filename:split(Filename),
- list_to_atom(filename:basename(string:join(Rest, "."), ".beam")).
+ list_to_atom(filename:basename(rebar_string:join(Rest, "."), ".beam")).
beam_to_mod(Filename) ->
list_to_atom(filename:basename(Filename, ".beam")).
@@ -703,7 +703,7 @@ vcs_vsn_cmd(_, _, _) ->
vcs_vsn_invoke(Cmd, Dir) ->
{ok, VsnString} = rebar_utils:sh(Cmd, [{cd, Dir}, {use_stdout, false}]),
- string:strip(VsnString, right, $\n).
+ rebar_string:trim(VsnString, trailing, "\n").
find_resource_module(Type, Resources) ->
case lists:keyfind(Type, 1, Resources) of
@@ -896,9 +896,8 @@ list_dir(Dir) ->
set_proxy_auth([]) ->
ok;
set_proxy_auth(UserInfo) ->
- Idx = string:chr(UserInfo, $:),
- Username = string:sub_string(UserInfo, 1, Idx-1),
- Password = string:sub_string(UserInfo, Idx+1),
+ [Username, Password] = re:split(UserInfo, ":",
+ [{return, list}, {parts,2}, unicode]),
%% password may contain url encoded characters, need to decode them first
application:set_env(rebar, proxy_auth, [{proxy_auth, {Username, http_uri:decode(Password)}}]).