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