@@ -13,29 +13,22 @@ using v8::String;
13
13
14
14
std::vector<std::string> Dotenv::GetPathFromArgs (
15
15
const std::vector<std::string>& args) {
16
- const auto find_match = [](const std::string& arg) {
17
- const std::string_view flag = " --env-file" ;
18
- return strncmp (arg.c_str (), flag.data (), flag.size ()) == 0 ;
19
- };
16
+ const std::string_view flag = " --env-file" ;
20
17
std::vector<std::string> paths;
21
- auto path = std::find_if (args.begin (), args.end (), find_match);
22
18
23
- while (path != args.end ()) {
24
- auto equal_char = path->find (' =' );
25
-
26
- if (equal_char != std::string::npos) {
27
- paths.push_back (path->substr (equal_char + 1 ));
28
- } else {
29
- auto next_path = std::next (path);
30
-
31
- if (next_path == args.end ()) {
32
- return paths;
19
+ for (size_t i = 0 ; i < args.size (); ++i) {
20
+ const std::string_view arg = args[i];
21
+ if (arg == " --" ) {
22
+ break ;
23
+ }
24
+ if (arg.find (flag) == 0 ) {
25
+ if (arg.size () > flag.size () && arg[flag.size ()] == ' =' ) {
26
+ paths.push_back (std::string (arg.substr (flag.size () + 1 )));
27
+ } else if (i + 1 < args.size ()) {
28
+ paths.push_back (args[i + 1 ]);
29
+ ++i;
33
30
}
34
-
35
- paths.push_back (*next_path);
36
31
}
37
-
38
- path = std::find_if (++path, args.end (), find_match);
39
32
}
40
33
41
34
return paths;
0 commit comments