* \author Teemu Murtola <teemu.murtola@gmail.com>
* \ingroup module_commandline
*/
-#include "gromacs/commandline/cmdlinehelpmodule.h"
+#include "gmxpre.h"
+
+#include "cmdlinehelpmodule.h"
-#include <algorithm>
#include <string>
#include <vector>
#include <boost/scoped_ptr.hpp>
-#include "gromacs/legacyheaders/copyrite.h"
-
#include "gromacs/commandline/cmdlinehelpcontext.h"
#include "gromacs/commandline/cmdlinehelpwriter.h"
#include "gromacs/commandline/cmdlineparser.h"
-#include "gromacs/commandline/shellcompletions.h"
#include "gromacs/onlinehelp/helpformat.h"
#include "gromacs/onlinehelp/helpmanager.h"
#include "gromacs/onlinehelp/helptopic.h"
#include "gromacs/onlinehelp/helpwritercontext.h"
#include "gromacs/options/basicoptions.h"
#include "gromacs/options/options.h"
+#include "gromacs/utility/baseversion.h"
#include "gromacs/utility/exceptions.h"
#include "gromacs/utility/file.h"
#include "gromacs/utility/gmxassert.h"
#include "gromacs/utility/programcontext.h"
#include "gromacs/utility/stringutil.h"
+#include "shellcompletions.h"
+
namespace gmx
{
*
* Does not throw.
*/
- explicit RootHelpTopic(const std::string &binaryName)
- : binaryName_(binaryName)
+ explicit RootHelpTopic(const CommandLineHelpModuleImpl &helpModule)
+ : helpModule_(helpModule)
{
}
virtual void writeHelp(const HelpWriterContext &context) const;
private:
- std::string binaryName_;
+ const CommandLineHelpModuleImpl &helpModule_;
GMX_DISALLOW_COPY_AND_ASSIGN(RootHelpTopic);
};
}
{
CommandLineCommonOptionsHolder optionsHolder;
- CommandLineHelpContext cmdlineContext(context);
+ CommandLineHelpContext cmdlineContext(*helpModule_.context_);
+ cmdlineContext.setModuleDisplayName(helpModule_.binaryName_);
optionsHolder.initOptions();
- cmdlineContext.setModuleDisplayName(binaryName_);
// TODO: Add <command> [<args>] into the synopsis.
- // TODO: Propagate the -hidden option here.
CommandLineHelpWriter(*optionsHolder.options())
.writeHelp(cmdlineContext);
}
// TODO: It would be nice to remove the VERSION prefix from the version
// string to make it shorter.
file.writeLine(formatString(".TH %s 1 \"\" \"%s\" \"GROMACS Manual\"\n",
- tag.c_str(),
- GromacsVersion()));
+ tag.c_str(), gmx_version()));
file.writeLine(".SH NAME");
file.writeLine(formatString("%s - %s", tag.c_str(),
module.shortDescription()));
"gromacs.7.in must contain a @PROGMANPAGES@ line");
std::string header = man7Template.substr(0, index);
man7Footer_ = man7Template.substr(index + std::strlen(programListPlaceholder));
- header = replaceAll(header, "@VERSION@", GromacsVersion());
+ header = replaceAll(header, "@VERSION@", gmx_version());
man7File_.reset(new File("man7/gromacs.7", "w"));
man7File_->writeLine(header);
}
HelpExportHtml::HelpExportHtml(const CommandLineHelpModuleImpl &helpModule)
: links_(eHelpOutputFormat_Html)
{
- initProgramLinks(&links_, helpModule);
File linksFile("links.dat", "r");
std::string line;
while (linksFile.readLine(&line))
links_.addLink(line, "../online/" + line, line);
}
linksFile.close();
+ initProgramLinks(&links_, helpModule);
setupHeaderAndFooter();
}
void HelpExportHtml::setupHeaderAndFooter()
{
header_ = gmx::File::readToString("header.html.in");
- header_ = replaceAll(header_, "@VERSION@", GromacsVersion());
+ header_ = replaceAll(header_, "@VERSION@", gmx_version());
gmx::File::writeFileFromString("header.html", header_);
header_ = replaceAll(header_, "@ROOTPATH@", "../");
footer_ = gmx::File::readToString("footer.html");
{
const std::string &tag(module->first);
std::string displayName(tag);
- std::replace(displayName.begin(), displayName.end(), '-', ' ');
+ // TODO: This does not work if the binary name would contain a dash,
+ // but that is not currently the case.
+ size_t dashPos = displayName.find('-');
+ GMX_RELEASE_ASSERT(dashPos != std::string::npos,
+ "There should always be at least one dash in the tag");
+ displayName[dashPos] = ' ';
indexFile_->writeLine(formatString("<a href=\"%s.html\">%s</a> - %s<br>",
tag.c_str(), displayName.c_str(),
module->second));
const std::string &binaryName,
const CommandLineModuleMap &modules,
const CommandLineModuleGroupList &groups)
- : rootTopic_(new RootHelpTopic(binaryName)), programContext_(programContext),
+ : rootTopic_(new RootHelpTopic(*this)), programContext_(programContext),
binaryName_(binaryName), modules_(modules), groups_(groups),
context_(NULL), moduleOverride_(NULL), bHidden_(false),
outputOverride_(NULL)
{
const char *const moduleName = module->first.c_str();
std::string tag(formatString("%s-%s", program, moduleName));
- std::string displayName(tag);
- std::replace(displayName.begin(), displayName.end(), '-', ' ');
+ std::string displayName(formatString("%s %s", program, moduleName));
exporter->exportModuleHelp(*module->second, tag, displayName);
}
}