@@ -11,31 +11,23 @@ using v8::NewStringType;
1111using v8::Object;
1212using v8::String;
1313
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" ;
2016 std::vector<std::string> paths;
21- auto path = std::find_if (args.begin (), args.end (), find_match);
2217
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;
3329 }
34-
35- paths.push_back (*next_path);
3630 }
37-
38- path = std::find_if (++path, args.end (), find_match);
3931 }
4032
4133 return paths;
0 commit comments