From ab2d8c092e0d67c6d2ba9912b413153db314722e Mon Sep 17 00:00:00 2001 From: Gurkirat Singh Date: Thu, 5 Oct 2023 08:10:56 +0530 Subject: [PATCH] LibCore: Implement handler for `Vector` positional arguments --- Userland/Libraries/LibCore/ArgsParser.cpp | 15 +++++++++++++++ Userland/Libraries/LibCore/ArgsParser.h | 1 + 2 files changed, 16 insertions(+) diff --git a/Userland/Libraries/LibCore/ArgsParser.cpp b/Userland/Libraries/LibCore/ArgsParser.cpp index d3f13432f5c..ec94fd0f366 100644 --- a/Userland/Libraries/LibCore/ArgsParser.cpp +++ b/Userland/Libraries/LibCore/ArgsParser.cpp @@ -743,6 +743,21 @@ void ArgsParser::add_positional_argument(Vector& values, char const* add_positional_argument(move(arg)); } +void ArgsParser::add_positional_argument(Vector& values, char const* help_string, char const* name, Required required) +{ + Arg arg { + help_string, + name, + required == Required::Yes ? 1 : 0, + INT_MAX, + [&values](StringView s) -> ErrorOr { + TRY_OR_ERROR_IF_NOT_OOM(values.try_append(TRY(String::from_utf8(s))), s); + return true; + } + }; + add_positional_argument(move(arg)); +} + void ArgsParser::autocomplete(FILE* file, StringView program_name, ReadonlySpan remaining_arguments) { // We expect the full invocation of the program to be available as positional args, diff --git a/Userland/Libraries/LibCore/ArgsParser.h b/Userland/Libraries/LibCore/ArgsParser.h index af3e17971fa..9b42e943752 100644 --- a/Userland/Libraries/LibCore/ArgsParser.h +++ b/Userland/Libraries/LibCore/ArgsParser.h @@ -123,6 +123,7 @@ public: void add_positional_argument(double& value, char const* help_string, char const* name, Required required = Required::Yes); void add_positional_argument(Vector& value, char const* help_string, char const* name, Required required = Required::Yes); void add_positional_argument(Vector& value, char const* help_string, char const* name, Required required = Required::Yes); + void add_positional_argument(Vector& value, char const* help_string, char const* name, Required required = Required::Yes); private: void autocomplete(FILE*, StringView program_name, ReadonlySpan remaining_arguments);