cmake: Implement placeholder --help-custom-modules compatibility
The implementation of the "cmake --help-custom-modules" was removed along with the rest of the old help generation infrastructure when documentation was converted to reStructuredText. In order to avoid breaking existing project builds outright when they use a custom command that runs a command like "cmake --help-custom-modules foo.1", generate the requested file with placeholder content explaining that the option is not supported anymore.
This commit is contained in:
parent
beb9cfae17
commit
b17729460b
|
@ -138,6 +138,8 @@ bool cmDocumentation::PrintDocumentation(Type ht, std::ostream& os)
|
|||
return this->PrintHelpListPolicies(os);
|
||||
case cmDocumentation::Version:
|
||||
return this->PrintVersion(os);
|
||||
case cmDocumentation::OldCustomModules:
|
||||
return this->PrintOldCustomModules(os);
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
@ -336,8 +338,16 @@ bool cmDocumentation::CheckOptions(int argc, const char* const* argv,
|
|||
GET_OPT_ARGUMENT(help.Filename);
|
||||
cmSystemTools::Message(
|
||||
"Warning: --help-custom-modules no longer supported");
|
||||
if(help.Filename.empty())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
// Avoid breaking old project builds completely by at least generating
|
||||
// the output file. Abuse help.Argument to give the file name to
|
||||
// PrintOldCustomModules without disrupting our internal API.
|
||||
help.HelpType = cmDocumentation::OldCustomModules;
|
||||
help.Argument = cmSystemTools::GetFilenameName(help.Filename);
|
||||
}
|
||||
else if(strcmp(argv[i], "--help-commands") == 0)
|
||||
{
|
||||
help.HelpType = cmDocumentation::OneManual;
|
||||
|
@ -864,3 +874,48 @@ bool cmDocumentation::IsOption(const char* arg) const
|
|||
return ((arg[0] == '-') || (strcmp(arg, "/V") == 0) ||
|
||||
(strcmp(arg, "/?") == 0));
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmDocumentation::PrintOldCustomModules(std::ostream& os)
|
||||
{
|
||||
// CheckOptions abuses the Argument field to give us the file name.
|
||||
std::string filename = this->CurrentArgument;
|
||||
std::string ext = cmSystemTools::UpperCase(
|
||||
cmSystemTools::GetFilenameLastExtension(filename));
|
||||
std::string name = cmSystemTools::GetFilenameWithoutLastExtension(filename);
|
||||
|
||||
const char* summary = "cmake --help-custom-modules no longer supported\n";
|
||||
const char* detail =
|
||||
"CMake versions prior to 3.0 exposed their internal module help page\n"
|
||||
"generation functionality through the --help-custom-modules option.\n"
|
||||
"CMake versions 3.0 and above use other means to generate their module\n"
|
||||
"help pages so this functionality is no longer available to be exposed.\n"
|
||||
"\n"
|
||||
"This file was generated as a placeholder to provide this information.\n"
|
||||
;
|
||||
if((ext == ".HTM") || (ext == ".HTML"))
|
||||
{
|
||||
os << "<html><title>" << name << "</title><body>\n"
|
||||
<< summary << "<p/>\n" << detail << "</body></html>\n";
|
||||
}
|
||||
else if((ext.length()==2) && (ext[1] >='1') && (ext[1]<='9'))
|
||||
{
|
||||
os <<
|
||||
".TH " << name << " " << ext[1] << " \"" <<
|
||||
cmSystemTools::GetCurrentDateTime("%B %d, %Y") <<
|
||||
"\" \"cmake " << cmVersion::GetCMakeVersion() << "\"\n"
|
||||
".SH NAME\n"
|
||||
".PP\n" <<
|
||||
name << " \\- " << summary <<
|
||||
"\n"
|
||||
".SH DESCRIPTION\n"
|
||||
".PP\n" <<
|
||||
detail
|
||||
;
|
||||
}
|
||||
else
|
||||
{
|
||||
os << name << "\n\n" << summary << "\n" << detail;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -115,6 +115,7 @@ private:
|
|||
bool PrintHelpListVariables(std::ostream& os);
|
||||
bool PrintHelpListPolicies(std::ostream& os);
|
||||
bool PrintDocumentationUsage(std::ostream& os);
|
||||
bool PrintOldCustomModules(std::ostream& os);
|
||||
|
||||
const char* GetNameString() const;
|
||||
bool IsOption(const char* arg) const;
|
||||
|
|
|
@ -28,7 +28,8 @@ public:
|
|||
{
|
||||
None, Version, Usage, ListManuals,
|
||||
ListCommands, ListModules, ListProperties, ListVariables, ListPolicies,
|
||||
OneManual, OneCommand, OneModule, OneProperty, OneVariable, OnePolicy
|
||||
OneManual, OneCommand, OneModule, OneProperty, OneVariable, OnePolicy,
|
||||
OldCustomModules
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue