Show more detailed help for models in qgis_process

Include any examples, author and version information in help output
This commit is contained in:
Nyall Dawson 2022-02-28 14:15:11 +10:00
parent 9b52cdc555
commit 8ceaf00f98
3 changed files with 47 additions and 5 deletions

View File

@ -805,13 +805,41 @@ int QgsProcessingExec::showAlgorithmHelp( const QString &inputId, bool useJson )
if ( !useJson )
{
std::cout << QStringLiteral( "%1 (%2)\n" ).arg( alg->displayName(), alg->id() ).toLocal8Bit().constData();
std::cout << "\n----------------\n";
std::cout << "Description\n";
std::cout << "----------------\n";
if ( const QgsProcessingModelAlgorithm *model = dynamic_cast< const QgsProcessingModelAlgorithm * >( alg ) )
{
// show finer help content for models
const QVariantMap help = model->helpContent();
std::cout << help.value( QStringLiteral( "ALG_DESC" ) ).toString().toLocal8Bit().constData() << '\n';
if ( !help.value( QStringLiteral( "ALG_CREATOR" ) ).toString().isEmpty() ||
!help.value( QStringLiteral( "ALG_VERSION" ) ).toString().isEmpty() )
std::cout << '\n';
if ( !help.value( QStringLiteral( "ALG_CREATOR" ) ).toString().isEmpty() )
std::cout << "Algorithm author:\t" << help.value( QStringLiteral( "ALG_CREATOR" ) ).toString().toLocal8Bit().constData() << '\n';
if ( !help.value( QStringLiteral( "ALG_VERSION" ) ).toString().isEmpty() )
std::cout << "Algorithm version:\t" << help.value( QStringLiteral( "ALG_VERSION" ) ).toString().toLocal8Bit().constData() << '\n';
if ( !help.value( QStringLiteral( "EXAMPLES" ) ).toString().isEmpty() )
{
std::cout << "\n----------------\n";
std::cout << "Examples\n";
std::cout << "----------------\n";
std::cout << help.value( QStringLiteral( "EXAMPLES" ) ).toString().toLocal8Bit().constData() << '\n';
}
}
else
{
if ( !alg->shortDescription().isEmpty() )
std::cout << alg->shortDescription().toLocal8Bit().constData() << '\n';
if ( !alg->shortHelpString().isEmpty() && alg->shortHelpString() != alg->shortDescription() )
std::cout << alg->shortHelpString().toLocal8Bit().constData() << '\n';
}
std::cout << "\n----------------\n";
std::cout << "Arguments\n";

View File

@ -402,6 +402,10 @@ class TestQgsProcessExecutable(unittest.TestCase):
self.assertFalse(err)
self.assertEqual(rc, 0)
self.assertIn('model description', output.lower())
self.assertIn('author of model', output.lower())
self.assertIn('version 2.1', output.lower())
self.assertIn('examples', output.lower())
self.assertIn('this is an example of running the model', output.lower())
def testModelRun(self):
output_file = self.TMP_DIR + '/model_output.shp'

View File

@ -71,7 +71,12 @@
<Option name="designerParameterValues"/>
<Option name="groupBoxes"/>
<Option name="help" type="Map">
<Option name="ALG_DESC" type="QString" value="model description"/>
<Option name="ALG_CREATOR" type="QString" value="Author of model"/>
<Option name="ALG_DESC" type="QString" value="This is the model description"/>
<Option name="ALG_VERSION" type="QString" value="Version 2.1"/>
<Option name="EXAMPLES" type="QString" value="this is an example of running the model"/>
<Option name="HELP_URL" type="QString" value=""/>
<Option name="SHORT_DESCRIPTION" type="QString" value=""/>
</Option>
<Option name="modelVariables"/>
<Option name="model_group" type="QString" value=""/>
@ -82,8 +87,10 @@
<Option type="int" value="-1"/>
</Option>
<Option name="default" type="invalid"/>
<Option name="defaultGui" type="invalid"/>
<Option name="description" type="QString" value="FEATS"/>
<Option name="flags" type="int" value="0"/>
<Option name="help" type="QString" value=""/>
<Option name="metadata"/>
<Option name="name" type="QString" value="FEATS"/>
<Option name="parameter_type" type="QString" value="source"/>
@ -92,8 +99,10 @@
<Option name="create_by_default" type="bool" value="true"/>
<Option name="data_type" type="int" value="0"/>
<Option name="default" type="invalid"/>
<Option name="defaultGui" type="invalid"/>
<Option name="description" type="QString" value="CENTROIDS"/>
<Option name="flags" type="int" value="0"/>
<Option name="help" type="QString" value=""/>
<Option name="metadata"/>
<Option name="name" type="QString" value="native:centroids_1:CENTROIDS"/>
<Option name="parameter_type" type="QString" value="sink"/>
@ -101,6 +110,7 @@
<Option name="supports_non_file_outputs" type="bool" value="true"/>
</Option>
</Option>
<Option name="parameterOrder"/>
<Option name="parameters" type="Map">
<Option name="FEATS" type="Map">
<Option name="color" type="QString" value=""/>