int CommandLineHelpModule::run(int argc, char *argv[]) { // Add internal topics lazily here. addTopic(HelpTopicPointer(new CommandsHelpTopic(*impl_)), false); const char *const exportFormats[] = { "rst", "completion" }; std::string exportFormat; Options options(NULL, NULL); options.addOption(StringOption("export").store(&exportFormat) .enumValue(exportFormats)); CommandLineParser(&options).parse(&argc, argv); if (!exportFormat.empty()) { ModificationCheckingFileOutputRedirector redirector(impl_->outputRedirector_); const std::unique_ptr<IHelpExport> exporter( impl_->createExporter(exportFormat, &redirector)); impl_->exportHelp(exporter.get()); return 0; } TextOutputStream &outputFile = impl_->outputRedirector_->standardOutput(); TextWriter writer(&outputFile); HelpLinks links(eHelpOutputFormat_Console); initProgramLinks(&links, *impl_); CommandLineHelpContext context(&writer, eHelpOutputFormat_Console, &links, impl_->binaryName_); context.setShowHidden(impl_->bHidden_); if (impl_->moduleOverride_ != NULL) { context.setModuleDisplayName(impl_->programContext_.displayName()); impl_->moduleOverride_->writeHelp(context); return 0; } impl_->context_ = &context; HelpManager helpManager(impl_->rootTopic_, context.writerContext()); try { for (int i = 1; i < argc; ++i) { helpManager.enterTopic(argv[i]); } } catch (const InvalidInputError &ex) { fprintf(stderr, "%s\n", ex.what()); return 2; } helpManager.writeCurrentTopic(); return 0; }
int CommandLineHelpModule::run(int argc, char *argv[]) { HelpWriterContext context(&File::standardOutput(), eHelpOutputFormat_Console); HelpManager helpManager(*rootTopic_, context); try { for (int i = 1; i < argc; ++i) { helpManager.enterTopic(argv[i]); } } catch (const InvalidInputError &ex) { fprintf(stderr, "%s\n", ex.what()); return 2; } helpManager.writeCurrentTopic(); return 0; }
int CommandLineHelpModule::run(int argc, char *argv[]) { // Add internal topics lazily here. addTopic(HelpTopicPointer(new CommandsHelpTopic(*impl_))); const char *const exportFormats[] = { "rst", "completion" }; std::string exportFormat; Options options(NULL, NULL); options.addOption(StringOption("export").store(&exportFormat) .enumValue(exportFormats)); CommandLineParser(&options).parse(&argc, argv); if (!exportFormat.empty()) { boost::scoped_ptr<HelpExportInterface> exporter; if (exportFormat == "rst") { exporter.reset(new HelpExportReStructuredText(*impl_)); } else if (exportFormat == "completion") { exporter.reset(new HelpExportCompletion(*impl_)); } else { GMX_THROW(NotImplementedError("This help format is not implemented")); } impl_->exportHelp(exporter.get()); return 0; } File &outputFile = impl_->outputRedirector_->standardOutput(); HelpLinks links(eHelpOutputFormat_Console); initProgramLinks(&links, *impl_); boost::scoped_ptr<CommandLineHelpContext> context( new CommandLineHelpContext(&outputFile, eHelpOutputFormat_Console, &links)); context->setShowHidden(impl_->bHidden_); if (impl_->moduleOverride_ != NULL) { context->setModuleDisplayName(impl_->programContext_.displayName()); impl_->moduleOverride_->writeHelp(*context); return 0; } impl_->context_ = context.get(); HelpManager helpManager(*impl_->rootTopic_, context->writerContext()); try { for (int i = 1; i < argc; ++i) { helpManager.enterTopic(argv[i]); } } catch (const InvalidInputError &ex) { fprintf(stderr, "%s\n", ex.what()); return 2; } helpManager.writeCurrentTopic(); return 0; }