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);
|
return this->PrintHelpListPolicies(os);
|
||||||
case cmDocumentation::Version:
|
case cmDocumentation::Version:
|
||||||
return this->PrintVersion(os);
|
return this->PrintVersion(os);
|
||||||
|
case cmDocumentation::OldCustomModules:
|
||||||
|
return this->PrintOldCustomModules(os);
|
||||||
default: return false;
|
default: return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -336,7 +338,15 @@ bool cmDocumentation::CheckOptions(int argc, const char* const* argv,
|
||||||
GET_OPT_ARGUMENT(help.Filename);
|
GET_OPT_ARGUMENT(help.Filename);
|
||||||
cmSystemTools::Message(
|
cmSystemTools::Message(
|
||||||
"Warning: --help-custom-modules no longer supported");
|
"Warning: --help-custom-modules no longer supported");
|
||||||
return true;
|
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)
|
else if(strcmp(argv[i], "--help-commands") == 0)
|
||||||
{
|
{
|
||||||
|
@ -864,3 +874,48 @@ bool cmDocumentation::IsOption(const char* arg) const
|
||||||
return ((arg[0] == '-') || (strcmp(arg, "/V") == 0) ||
|
return ((arg[0] == '-') || (strcmp(arg, "/V") == 0) ||
|
||||||
(strcmp(arg, "/?") == 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 PrintHelpListVariables(std::ostream& os);
|
||||||
bool PrintHelpListPolicies(std::ostream& os);
|
bool PrintHelpListPolicies(std::ostream& os);
|
||||||
bool PrintDocumentationUsage(std::ostream& os);
|
bool PrintDocumentationUsage(std::ostream& os);
|
||||||
|
bool PrintOldCustomModules(std::ostream& os);
|
||||||
|
|
||||||
const char* GetNameString() const;
|
const char* GetNameString() const;
|
||||||
bool IsOption(const char* arg) const;
|
bool IsOption(const char* arg) const;
|
||||||
|
|
|
@ -28,7 +28,8 @@ public:
|
||||||
{
|
{
|
||||||
None, Version, Usage, ListManuals,
|
None, Version, Usage, ListManuals,
|
||||||
ListCommands, ListModules, ListProperties, ListVariables, ListPolicies,
|
ListCommands, ListModules, ListProperties, ListVariables, ListPolicies,
|
||||||
OneManual, OneCommand, OneModule, OneProperty, OneVariable, OnePolicy
|
OneManual, OneCommand, OneModule, OneProperty, OneVariable, OnePolicy,
|
||||||
|
OldCustomModules
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue