[PATCH] D73982: [yaml2obj] Refactor command line parsing
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 4 10:58:45 PST 2020
MaskRay created this revision.
MaskRay added reviewers: grimar, jhenderson.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
- Hide unrelated options.
- Add "OVERVIEW: " to yaml2obj -h/--help.
- Place options under a yaml2obj category.
- Disallow -docnum. Currently -docnum is the only yaml2obj specific long option that is affected.
- Specify init("-") for OutputFilename.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D73982
Files:
llvm/test/tools/yaml2obj/help.test
llvm/tools/yaml2obj/yaml2obj.cpp
Index: llvm/tools/yaml2obj/yaml2obj.cpp
===================================================================
--- llvm/tools/yaml2obj/yaml2obj.cpp
+++ llvm/tools/yaml2obj/yaml2obj.cpp
@@ -28,22 +28,28 @@
using namespace llvm;
-static cl::opt<std::string>
- Input(cl::Positional, cl::desc("<input>"), cl::init("-"));
+namespace {
+cl::OptionCategory Cat("yaml2obj Options");
-static cl::opt<unsigned>
+cl::opt<std::string> Input(cl::Positional, cl::desc("<input file>"),
+ cl::init("-"), cl::cat(Cat));
+
+cl::opt<unsigned>
DocNum("docnum", cl::init(1),
- cl::desc("Read specified document from input (default = 1)"));
+ cl::desc("Read specified document from input (default = 1)"),
+ cl::cat(Cat));
-static cl::opt<std::string> OutputFilename("o", cl::desc("Output filename"),
- cl::value_desc("filename"));
+cl::opt<std::string> OutputFilename("o", cl::desc("Output filename"),
+ cl::init("-"), cl::value_desc("filename"),
+ cl::cat(Cat));
+} // namespace
int main(int argc, char **argv) {
InitLLVM X(argc, argv);
- cl::ParseCommandLineOptions(argc, argv);
-
- if (OutputFilename.empty())
- OutputFilename = "-";
+ cl::HideUnrelatedOptions(Cat);
+ cl::ParseCommandLineOptions(
+ argc, argv, "Create an object file from YAML description", nullptr,
+ nullptr, /*LongOptionsUseDoubleDash=*/true);
auto ErrHandler = [](const Twine &Msg) {
WithColor::error(errs(), "yaml2obj") << Msg << "\n";
Index: llvm/test/tools/yaml2obj/help.test
===================================================================
--- /dev/null
+++ llvm/test/tools/yaml2obj/help.test
@@ -0,0 +1,13 @@
+## Show that help text is printed correctly when requested.
+
+RUN: yaml2obj -h | FileCheck %s --check-prefixes=CHECK,CATEG
+RUN: yaml2obj --help | FileCheck %s --check-prefixes=CHECK,CATEG
+RUN: yaml2obj --help-list | FileCheck %s --check-prefixes=CHECK,LIST
+
+CHECK: OVERVIEW: Create an object file from YAML description
+CHECK: USAGE: yaml2obj{{(.exe)?}} [options] <input>{{$}}
+CHECK: OPTIONS:
+CATEG: Generic Options:
+LIST-NOT: Generic Options:
+CATEG: yaml2obj Options:
+LIST-NOT: yaml2obj Options:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73982.242378.patch
Type: text/x-patch
Size: 2297 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200204/c9fac884/attachment.bin>
More information about the llvm-commits
mailing list