Skip to content

Commit 2b0b83d

Browse files
[projmgr] Add a hint in missing component error message
1 parent 587bb48 commit 2b0b83d

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

tools/projmgr/include/ProjMgrWorker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ class ProjMgrWorker {
842842
bool ProcessToolchain(ContextItem& context);
843843
bool ProcessPackages(ContextItem& context, const std::string& packRoot);
844844
bool ProcessComponents(ContextItem& context);
845-
RteComponent* ProcessComponent(ContextItem& context, ComponentItem& item, RteComponentMap& componentMap);
845+
RteComponent* ProcessComponent(ContextItem& context, ComponentItem& item, RteComponentMap& componentMap, std::string& hint);
846846
bool ProcessGpdsc(ContextItem& context);
847847
bool ProcessConfigFiles(ContextItem& context);
848848
bool ProcessComponentFiles(ContextItem& context);

tools/projmgr/src/ProjMgrWorker.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1772,10 +1772,12 @@ bool ProjMgrWorker::ProcessComponents(ContextItem& context) {
17721772
if (item.component.empty()) {
17731773
continue;
17741774
}
1775-
RteComponent* matchedComponent = ProcessComponent(context, item, componentMap);
1775+
string hint;
1776+
RteComponent* matchedComponent = ProcessComponent(context, item, componentMap, hint);
17761777
if (!matchedComponent) {
17771778
// No match
1778-
ProjMgrLogger::Get().Error("no component was found with identifier '" + item.component + "'", context.name);
1779+
ProjMgrLogger::Get().Error("no component was found with identifier '" + item.component + "'" +
1780+
(!hint.empty() ? "\n did you mean '" + hint + "'?" : ""), context.name);
17791781
error = true;
17801782
continue;
17811783
}
@@ -1901,7 +1903,7 @@ bool ProjMgrWorker::ProcessComponents(ContextItem& context) {
19011903
return !error;
19021904
}
19031905

1904-
RteComponent* ProjMgrWorker::ProcessComponent(ContextItem& context, ComponentItem& item, RteComponentMap& componentMap)
1906+
RteComponent* ProjMgrWorker::ProcessComponent(ContextItem& context, ComponentItem& item, RteComponentMap& componentMap, string& hint)
19051907
{
19061908
if (!item.condition.empty()) {
19071909
RteComponentInstance ci(nullptr);
@@ -1987,6 +1989,9 @@ RteComponent* ProjMgrWorker::ProcessComponent(ContextItem& context, ComponentIte
19871989
}
19881990
}
19891991
// No match
1992+
if (filteredComponents.size() == 1) {
1993+
hint = filteredComponents.cbegin()->second->GetPartialComponentID(true);
1994+
}
19901995
return nullptr;
19911996
} else {
19921997
// One or multiple matches

tools/projmgr/test/data/TestProject/test_component_csub.cproject.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ project:
66
components:
77
- component: Board:Test:Rev1
88
- component: Board:Test
9+
- component: Device:Startup

tools/projmgr/test/src/ProjMgrWorkerUnitTests.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,9 @@ TEST_F(ProjMgrWorkerUnitTests, ProcessComponents_Csub) {
469469
EXPECT_FALSE(ProcessComponents(context));
470470
EXPECT_TRUE(context.components.find("ARM::Board:Test:[email protected]") != context.components.end());
471471
EXPECT_EQ("no component was found with identifier 'Board:Test'", ProjMgrLogger::Get().GetErrors()["test_component_csub"][0]);
472-
}
472+
EXPECT_EQ("no component was found with identifier 'Device:Startup'\n did you mean 'Device:Startup&RteTest Startup'?",
473+
ProjMgrLogger::Get().GetErrors()["test_component_csub"][1]);
474+
}
473475

474476
TEST_F(ProjMgrWorkerUnitTests, ProcessComponentsApi) {
475477
set<string> expectedComponents = {

0 commit comments

Comments
 (0)