diff options
-rw-r--r-- | src/app/qbs/commandlinefrontend.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp index ae81265ef..d07af0d6f 100644 --- a/src/app/qbs/commandlinefrontend.cpp +++ b/src/app/qbs/commandlinefrontend.cpp @@ -346,17 +346,28 @@ CommandLineFrontend::ProductMap CommandLineFrontend::productsToUse() const const ProjectData projectData = project.projectData(); const auto products = projectData.allProducts(); for (const ProductData &product : products) { + productNames << product.name(); if (useAll || m_parser.products().contains(product.name())) { productList.push_back(product); - productNames << product.name(); } } } const auto parsedProductNames = m_parser.products(); for (const QString &productName : parsedProductNames) { - if (!productNames.contains(productName)) - throw ErrorInfo(Tr::tr("No such product '%1'.").arg(productName)); + if (!productNames.contains(productName)) { + QString msg; + if (productNames.size() <= 10) { + productNames.sort(); + const QString available = productNames.join(QLatin1String("', '")); + msg = Tr::tr("No such product '%1'. " + "Available products: '%2'").arg(productName, available); + } else { + msg = Tr::tr("No such product '%1'. Use 'list-products' to see " + "all available products.").arg(productName); + } + throw ErrorInfo(msg); + } } return products; |