aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/getopt
diff options
context:
space:
mode:
authorsteplg <steplg@yandex-team.ru>2022-02-10 16:50:54 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:50:54 +0300
commit18b9863882c0f9638e4a6599acbcdfe6109d5da0 (patch)
tree5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/getopt
parentd385578a0e719dc19758dbdef4ca862726ce22a7 (diff)
downloadydb-18b9863882c0f9638e4a6599acbcdfe6109d5da0.tar.gz
Restoring authorship annotation for <steplg@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/getopt')
-rw-r--r--library/cpp/getopt/small/last_getopt.h2
-rw-r--r--library/cpp/getopt/small/modchooser.cpp128
-rw-r--r--library/cpp/getopt/small/modchooser.h104
-rw-r--r--library/cpp/getopt/ut/last_getopt_ut.cpp10
4 files changed, 122 insertions, 122 deletions
diff --git a/library/cpp/getopt/small/last_getopt.h b/library/cpp/getopt/small/last_getopt.h
index 8ebb5e8d08..07687bc914 100644
--- a/library/cpp/getopt/small/last_getopt.h
+++ b/library/cpp/getopt/small/last_getopt.h
@@ -61,7 +61,7 @@ namespace NLastGetopt {
public:
using TContainer = Container;
using TValue = typename TContainer::value_type;
-
+
explicit TOptSplitHandler(TContainer* target, const char delim)
: Target(target)
, Delim(delim)
diff --git a/library/cpp/getopt/small/modchooser.cpp b/library/cpp/getopt/small/modchooser.cpp
index 1cfa122778..2fa5cfd070 100644
--- a/library/cpp/getopt/small/modchooser.cpp
+++ b/library/cpp/getopt/small/modchooser.cpp
@@ -2,73 +2,73 @@
#include "completer_command.h"
#include "completion_generator.h"
#include "last_getopt.h"
-#include "modchooser.h"
-
+#include "modchooser.h"
+
#include <library/cpp/colorizer/colors.h>
#include <util/stream/output.h>
#include <util/stream/format.h>
-#include <util/generic/yexception.h>
+#include <util/generic/yexception.h>
#include <util/generic/ptr.h>
#include <util/string/builder.h>
#include <util/string/join.h>
-
+
class PtrWrapper: public TMainClass {
-public:
- explicit PtrWrapper(const TMainFunctionPtr main)
+public:
+ explicit PtrWrapper(const TMainFunctionPtr main)
: Main(main)
{
}
-
+
int operator()(const int argc, const char** argv) override {
return Main(argc, argv);
- }
-
-private:
- TMainFunctionPtr Main;
-};
-
+ }
+
+private:
+ TMainFunctionPtr Main;
+};
+
class PtrvWrapper: public TMainClass {
-public:
- explicit PtrvWrapper(const TMainFunctionPtrV main)
+public:
+ explicit PtrvWrapper(const TMainFunctionPtrV main)
: Main(main)
{
}
-
+
int operator()(const int argc, const char** argv) override {
TVector<TString> nargv(argv, argv + argc);
return Main(nargv);
- }
-
-private:
- TMainFunctionPtrV Main;
-};
-
+ }
+
+private:
+ TMainFunctionPtrV Main;
+};
+
class ClassWrapper: public TMainClass {
-public:
+public:
explicit ClassWrapper(TMainClassV* main)
: Main(main)
{
}
-
+
int operator()(const int argc, const char** argv) override {
TVector<TString> nargv(argv, argv + argc);
return (*Main)(nargv);
- }
-
-private:
+ }
+
+private:
TMainClassV* Main;
-};
-
+};
+
TModChooser::TMode::TMode(const TString& name, TMainClass* main, const TString& descr, bool hidden, bool noCompletion)
: Name(name)
, Main(main)
, Description(descr)
, Hidden(hidden)
, NoCompletion(noCompletion)
-{
+{
}
-
+
TModChooser::TModChooser()
: ModesHelpOption("-?") // Default help option in last_getopt
, VersionHandler(nullptr)
@@ -79,7 +79,7 @@ TModChooser::TModChooser()
}
TModChooser::~TModChooser() = default;
-
+
void TModChooser::AddMode(const TString& mode, const TMainFunctionRawPtr func, const TString& description, bool hidden, bool noCompletion) {
AddMode(mode, TMainFunctionPtr(func), description, hidden, noCompletion);
}
@@ -91,21 +91,21 @@ void TModChooser::AddMode(const TString& mode, const TMainFunctionRawPtrV func,
void TModChooser::AddMode(const TString& mode, const TMainFunctionPtr func, const TString& description, bool hidden, bool noCompletion) {
Wrappers.push_back(MakeHolder<PtrWrapper>(func));
AddMode(mode, Wrappers.back().Get(), description, hidden, noCompletion);
-}
-
+}
+
void TModChooser::AddMode(const TString& mode, const TMainFunctionPtrV func, const TString& description, bool hidden, bool noCompletion) {
Wrappers.push_back(MakeHolder<PtrvWrapper>(func));
AddMode(mode, Wrappers.back().Get(), description, hidden, noCompletion);
-}
-
+}
+
void TModChooser::AddMode(const TString& mode, TMainClass* func, const TString& description, bool hidden, bool noCompletion) {
if (Modes.FindPtr(mode)) {
- ythrow yexception() << "TMode '" << mode << "' already exists in TModChooser.";
- }
-
+ ythrow yexception() << "TMode '" << mode << "' already exists in TModChooser.";
+ }
+
Modes[mode] = UnsortedModes.emplace_back(MakeHolder<TMode>(mode, func, description, hidden, noCompletion)).Get();
-}
-
+}
+
void TModChooser::AddMode(const TString& mode, TMainClassV* func, const TString& description, bool hidden, bool noCompletion) {
Wrappers.push_back(MakeHolder<ClassWrapper>(func));
AddMode(mode, Wrappers.back().Get(), description, hidden, noCompletion);
@@ -129,9 +129,9 @@ void TModChooser::AddAlias(const TString& alias, const TString& mode) {
}
void TModChooser::SetDescription(const TString& descr) {
- Description = descr;
-}
-
+ Description = descr;
+}
+
void TModChooser::SetModesHelpOption(const TString& helpOption) {
ModesHelpOption = helpOption;
}
@@ -161,11 +161,11 @@ void TModChooser::AddCompletions(TString progName, const TString& name, bool hid
CompletionsGenerator = NLastGetopt::MakeCompletionMod(this, std::move(progName), name);
AddMode(name, CompletionsGenerator.Get(), "generate autocompletion files", hidden, noCompletion);
}
-}
-
+}
+
int TModChooser::Run(const int argc, const char** argv) const {
Y_ENSURE(argc, "Can't run TModChooser with empty list of arguments.");
-
+
bool shiftArgs = true;
TString modeName;
if (argc == 1) {
@@ -178,12 +178,12 @@ int TModChooser::Run(const int argc, const char** argv) const {
}
} else {
modeName = argv[1];
- }
-
- if (modeName == "-h" || modeName == "--help" || modeName == "-?") {
+ }
+
+ if (modeName == "-h" || modeName == "--help" || modeName == "-?") {
PrintHelp(argv[0]);
- return 0;
- }
+ return 0;
+ }
if (VersionHandler && (modeName == "-v" || modeName == "--version")) {
VersionHandler();
return 0;
@@ -191,19 +191,19 @@ int TModChooser::Run(const int argc, const char** argv) const {
if (!SvnRevisionOptionDisabled && modeName == "--svnrevision") {
NLastGetopt::PrintVersionAndExit(nullptr);
}
-
+
auto modeIter = Modes.find(modeName);
if (modeIter == Modes.end() && !DefaultMode.empty()) {
modeIter = Modes.find(DefaultMode);
shiftArgs = false;
}
- if (modeIter == Modes.end()) {
+ if (modeIter == Modes.end()) {
Cerr << "Unknown mode " << modeName.Quote() << "." << Endl;
PrintHelp(argv[0]);
- return 1;
- }
-
+ return 1;
+ }
+
if (shiftArgs) {
TString firstArg;
TVector<const char*> nargv(Reserve(argc));
@@ -213,7 +213,7 @@ int TModChooser::Run(const int argc, const char** argv) const {
} else {
firstArg = argv[0] + TString(" ") + modeIter->second->Name;
}
-
+
nargv.push_back(firstArg.data());
for (int i = 2; i < argc; ++i) {
@@ -226,9 +226,9 @@ int TModChooser::Run(const int argc, const char** argv) const {
return (*modeIter->second->Main)(nargv.size() - 1, nargv.data());
} else {
return (*modeIter->second->Main)(argc, argv);
- }
-}
-
+ }
+}
+
int TModChooser::Run(const TVector<TString>& argv) const {
TVector<const char*> nargv(Reserve(argv.size() + 1));
for (auto& arg : argv) {
@@ -288,7 +288,7 @@ void TModChooser::PrintHelp(const TString& progName) const {
continue; // this is an alias
maxModeLen = Max(maxModeLen, mode->CalculateFullNameLen());
}
-
+
if (ShowSeparated) {
for (const auto& unsortedMode : UnsortedModes)
if (!unsortedMode->Hidden) {
@@ -317,8 +317,8 @@ void TModChooser::PrintHelp(const TString& progName) const {
if (!SvnRevisionOptionDisabled) {
Cerr << "To print svn revision type --svnrevision" << Endl;
}
- return;
-}
+ return;
+}
TVersionHandlerPtr TModChooser::GetVersionHandler() const {
return VersionHandler;
diff --git a/library/cpp/getopt/small/modchooser.h b/library/cpp/getopt/small/modchooser.h
index 8abdd531d0..0a8de6d50b 100644
--- a/library/cpp/getopt/small/modchooser.h
+++ b/library/cpp/getopt/small/modchooser.h
@@ -1,59 +1,59 @@
-#pragma once
-
+#pragma once
+
#include "last_getopt_opts.h"
#include <util/generic/map.h>
#include <util/generic/string.h>
-#include <util/generic/vector.h>
-
+#include <util/generic/vector.h>
+
#include <functional>
-//! Mode function with vector of cli arguments.
+//! Mode function with vector of cli arguments.
using TMainFunctionPtrV = std::function<int(const TVector<TString>&)> ;
using TMainFunctionRawPtrV = int (*)(const TVector<TString>& argv);
-
-//! Mode function with classic argc and argv arguments.
+
+//! Mode function with classic argc and argv arguments.
using TMainFunctionPtr = std::function<int(int, const char**)> ;
using TMainFunctionRawPtr = int (*)(const int argc, const char** argv);
-
-//! Mode class with vector of cli arguments.
-class TMainClassV {
-public:
+
+//! Mode class with vector of cli arguments.
+class TMainClassV {
+public:
virtual int operator()(const TVector<TString>& argv) = 0;
virtual ~TMainClassV() = default;
-};
-
-//! Mode class with classic argc and argv arguments.
-class TMainClass {
-public:
+};
+
+//! Mode class with classic argc and argv arguments.
+class TMainClass {
+public:
virtual int operator()(int argc, const char** argv) = 0;
virtual ~TMainClass() = default;
-};
-
+};
+
//! Function to handle '--version' parameter
typedef void (*TVersionHandlerPtr)();
-/*! Main class for handling different modes in single tool.
+/*! Main class for handling different modes in single tool.
*
- * You can add modes for this class, use autogenerated help with
- * list of modes and automaticly call necessary mode in run().
- *
- * In first argv element mode get joined by space tool name and
- * current mode name.
- */
-class TModChooser {
-public:
+ * You can add modes for this class, use autogenerated help with
+ * list of modes and automaticly call necessary mode in run().
+ *
+ * In first argv element mode get joined by space tool name and
+ * current mode name.
+ */
+class TModChooser {
+public:
TModChooser();
- ~TModChooser();
+ ~TModChooser();
-public:
+public:
void AddMode(const TString& mode, TMainFunctionRawPtr func, const TString& description, bool hidden = false, bool noCompletion = false);
void AddMode(const TString& mode, TMainFunctionRawPtrV func, const TString& description, bool hidden = false, bool noCompletion = false);
void AddMode(const TString& mode, TMainFunctionPtr func, const TString& description, bool hidden = false, bool noCompletion = false);
void AddMode(const TString& mode, TMainFunctionPtrV func, const TString& description, bool hidden = false, bool noCompletion = false);
void AddMode(const TString& mode, TMainClass* func, const TString& description, bool hidden = false, bool noCompletion = false);
void AddMode(const TString& mode, TMainClassV* func, const TString& description, bool hidden = false, bool noCompletion = false);
-
+
//! Hidden groups won't be displayed in 'help' block
void AddGroupModeDescription(const TString& description, bool hidden = false, bool noCompletion = false);
@@ -62,9 +62,9 @@ public:
void AddAlias(const TString& alias, const TString& mode);
- //! Set main program description.
+ //! Set main program description.
void SetDescription(const TString& descr);
-
+
//! Set modes help option name (-? is by default)
void SetModesHelpOption(const TString& helpOption);
@@ -84,32 +84,32 @@ public:
void AddCompletions(TString progName, const TString& name = "completion", bool hidden = false, bool noCompletion = false);
- /*! Run appropriate mode.
- *
+ /*! Run appropriate mode.
+ *
* In this method following things happen:
- * 1) If first argument is -h/--help/-? then print short description of
- * all modes and exit with zero code.
+ * 1) If first argument is -h/--help/-? then print short description of
+ * all modes and exit with zero code.
* 2) If first argument is -v/--version and version handler is specified,
* then call it and exit with zero code.
* 3) Find mode with the same name as first argument. If it's found then
* call it and return its return code.
* 4) If appropriate mode is not found - return non-zero code.
- */
+ */
int Run(int argc, const char** argv) const;
-
- //! Run appropriate mode. Same as Run(const int, const char**)
+
+ //! Run appropriate mode. Same as Run(const int, const char**)
int Run(const TVector<TString>& argv) const;
-
+
void PrintHelp(const TString& progName) const;
-
- struct TMode {
+
+ struct TMode {
TString Name;
TMainClass* Main;
TString Description;
bool Hidden;
bool NoCompletion;
TVector<TString> Aliases;
-
+
TMode()
: Main(nullptr)
{
@@ -120,8 +120,8 @@ public:
// Full name includes primary name and aliases. Also, will add ANSI colors.
size_t CalculateFullNameLen() const;
TString FormatFullName(size_t pad) const;
- };
-
+ };
+
TVector<const TMode*> GetUnsortedModes() const {
auto ret = TVector<const TMode*>(Reserve(UnsortedModes.size()));
for (auto& mode : UnsortedModes) {
@@ -129,22 +129,22 @@ public:
}
return ret;
}
-
+
TVersionHandlerPtr GetVersionHandler() const;
bool IsSvnRevisionOptionDisabled() const;
-private:
- //! Main program description.
+private:
+ //! Main program description.
TString Description;
-
+
//! Help option for modes.
TString ModesHelpOption;
//! Wrappers around all modes.
TVector<THolder<TMainClass>> Wrappers;
-
- //! Modes
+
+ //! Modes
TMap<TString, TMode*> Modes;
TString DefaultMode;
@@ -169,7 +169,7 @@ private:
//! Mode that generates completions
THolder<TMainClass> CompletionsGenerator;
-};
+};
//! Mode class that allows introspecting its console arguments.
class TMainClassArgs: public TMainClass {
diff --git a/library/cpp/getopt/ut/last_getopt_ut.cpp b/library/cpp/getopt/ut/last_getopt_ut.cpp
index 2ecbbf2949..c99a1d053d 100644
--- a/library/cpp/getopt/ut/last_getopt_ut.cpp
+++ b/library/cpp/getopt/ut/last_getopt_ut.cpp
@@ -487,11 +487,11 @@ Y_UNIT_TEST_SUITE(TLastGetoptTests) {
opts.AddLongOption('s', "split").SplitHandler(&vals, ',');
TOptsParseResultTestWrapper r(&opts, V({"prog", "--split=a,b,c"}));
UNIT_ASSERT_EQUAL(vals.size(), 3);
- UNIT_ASSERT_EQUAL(vals[0], "a");
- UNIT_ASSERT_EQUAL(vals[1], "b");
- UNIT_ASSERT_EQUAL(vals[2], "c");
- }
-
+ UNIT_ASSERT_EQUAL(vals[0], "a");
+ UNIT_ASSERT_EQUAL(vals[1], "b");
+ UNIT_ASSERT_EQUAL(vals[2], "c");
+ }
+
Y_UNIT_TEST(TestRangeSplitValue) {
TOptsNoDefault opts;
TVector<ui32> vals;