aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/getopt/small/modchooser.cpp
diff options
context:
space:
mode:
authordimdim11 <dimdim11@yandex-team.com>2023-06-07 00:12:42 +0300
committerdimdim11 <dimdim11@yandex-team.com>2023-06-07 00:12:42 +0300
commit5dfc708d4bbd53d9fbd627d7753f4c3a27cda532 (patch)
treee65fa658724da936a59524753686404c0682654d /library/cpp/getopt/small/modchooser.cpp
parentd7618ef587053f2eb7d20f0b2d89709e69009c1b (diff)
downloadydb-5dfc708d4bbd53d9fbd627d7753f4c3a27cda532.tar.gz
getopt: print help either to Cerr or Cout, configuring by option
Fix arc help output
Diffstat (limited to 'library/cpp/getopt/small/modchooser.cpp')
-rw-r--r--library/cpp/getopt/small/modchooser.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/library/cpp/getopt/small/modchooser.cpp b/library/cpp/getopt/small/modchooser.cpp
index c232857713..bc319089b7 100644
--- a/library/cpp/getopt/small/modchooser.cpp
+++ b/library/cpp/getopt/small/modchooser.cpp
@@ -5,6 +5,7 @@
#include <library/cpp/colorizer/colors.h>
+#include <util/folder/path.h>
#include <util/stream/output.h>
#include <util/generic/yexception.h>
#include <util/generic/ptr.h>
@@ -167,7 +168,7 @@ int TModChooser::Run(const int argc, const char** argv) const {
TString modeName;
if (argc == 1) {
if (DefaultMode.empty()) {
- PrintHelp(argv[0]);
+ PrintHelp(argv[0], HelpAlwaysToStdErr);
return 0;
} else {
modeName = DefaultMode;
@@ -178,7 +179,7 @@ int TModChooser::Run(const int argc, const char** argv) const {
}
if (modeName == "-h" || modeName == "--help" || modeName == "-?") {
- PrintHelp(argv[0]);
+ PrintHelp(argv[0], HelpAlwaysToStdErr);
return 0;
}
if (VersionHandler && (modeName == "-v" || modeName == "--version")) {
@@ -197,7 +198,7 @@ int TModChooser::Run(const int argc, const char** argv) const {
if (modeIter == Modes.end()) {
Cerr << "Unknown mode " << modeName.Quote() << "." << Endl;
- PrintHelp(argv[0]);
+ PrintHelp(argv[0], true);
return 1;
}
@@ -274,11 +275,14 @@ TString TModChooser::TMode::FormatFullName(size_t pad) const {
return name;
}
-void TModChooser::PrintHelp(const TString& progName) const {
- Cerr << Description << Endl << Endl;
- Cerr << NColorizer::StdErr().BoldColor() << "Usage" << NColorizer::StdErr().OldColor() << ": " << progName << " MODE [MODE_OPTIONS]" << Endl;
- Cerr << Endl;
- Cerr << NColorizer::StdErr().BoldColor() << "Modes" << NColorizer::StdErr().OldColor() << ":" << Endl;
+void TModChooser::PrintHelp(const TString& progName, bool toStdErr) const {
+ auto baseName = TFsPath(progName).Basename();
+ auto& out = toStdErr ? Cerr : Cout;
+ const auto& colors = toStdErr ? NColorizer::StdErr() : NColorizer::StdOut();
+ out << Description << Endl << Endl;
+ out << colors.BoldColor() << "Usage" << colors.OldColor() << ": " << baseName << " MODE [MODE_OPTIONS]" << Endl;
+ out << Endl;
+ out << colors.BoldColor() << "Modes" << colors.OldColor() << ":" << Endl;
size_t maxModeLen = 0;
for (const auto& [name, mode] : Modes) {
if (name != mode->Name)
@@ -290,10 +294,10 @@ void TModChooser::PrintHelp(const TString& progName) const {
for (const auto& unsortedMode : UnsortedModes)
if (!unsortedMode->Hidden) {
if (unsortedMode->Name.size()) {
- Cerr << " " << unsortedMode->FormatFullName(maxModeLen + 4) << unsortedMode->Description << Endl;
+ out << " " << unsortedMode->FormatFullName(maxModeLen + 4) << unsortedMode->Description << Endl;
} else {
- Cerr << SeparationString << Endl;
- Cerr << unsortedMode->Description << Endl;
+ out << SeparationString << Endl;
+ out << unsortedMode->Description << Endl;
}
}
} else {
@@ -302,19 +306,18 @@ void TModChooser::PrintHelp(const TString& progName) const {
continue; // this is an alias
if (!mode.second->Hidden) {
- Cerr << " " << mode.second->FormatFullName(maxModeLen + 4) << mode.second->Description << Endl;
+ out << " " << mode.second->FormatFullName(maxModeLen + 4) << mode.second->Description << Endl;
}
}
}
- Cerr << Endl;
- Cerr << "To get help for specific mode type '" << progName << " MODE " << ModesHelpOption << "'" << Endl;
+ out << Endl;
+ out << "To get help for specific mode type '" << baseName << " MODE " << ModesHelpOption << "'" << Endl;
if (VersionHandler)
- Cerr << "To print program version type '" << progName << " --version'" << Endl;
+ out << "To print program version type '" << baseName << " --version'" << Endl;
if (!SvnRevisionOptionDisabled) {
- Cerr << "To print svn revision type --svnrevision" << Endl;
+ out << "To print svn revision type '" << baseName << " --svnrevision'" << Endl;
}
- return;
}
TVersionHandlerPtr TModChooser::GetVersionHandler() const {