Skip to content

Commit 08de1ad

Browse files
committed
Improve Config::getProject() functions.
1 parent 42c09b3 commit 08de1ad

3 files changed

Lines changed: 29 additions & 25 deletions

File tree

src/common/config.cpp

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -155,34 +155,36 @@ void Config::clear_vars_cache() const
155155
}
156156
}
157157

158-
Project &Config::getProject(const String &pname) const
158+
Project &Config::getProject1(const ProjectPath &ppath)
159159
{
160-
const Project *p = nullptr;
160+
if (projects.empty())
161+
throw std::runtime_error("Projects are empty");
161162
if (projects.size() == 1)
162-
p = &projects.begin()->second;
163-
else if (!projects.empty())
164-
{
165-
auto it = projects.find(pname);
166-
if (it != projects.end())
167-
p = &it->second;
168-
}
169-
if (!p)
170-
throw std::runtime_error("No such project '" + pname + "' in dependencies list");
171-
return (Project &)*p;
163+
return projects.begin()->second;
164+
auto i = projects.find(ppath.toString());
165+
if (i == projects.end())
166+
throw std::runtime_error("No such project '" + ppath.toString() + "' in config");
167+
return i->second;
172168
}
173169

174-
Project &Config::getDefaultProject()
170+
Project &Config::getProject(const ProjectPath &ppath)
175171
{
176-
if (projects.empty())
177-
throw std::runtime_error("Projects are empty");
178-
return projects.begin()->second;
172+
return getProject1(ppath);
179173
}
180174

181-
const Project &Config::getDefaultProject() const
175+
const Project &Config::getProject(const ProjectPath &ppath) const
182176
{
183-
if (projects.empty())
184-
throw std::runtime_error("Projects are empty");
185-
return projects.begin()->second;
177+
return (const Project &)((Config *)this)->getProject1(ppath);
178+
}
179+
180+
Project &Config::getDefaultProject(const ProjectPath &ppath)
181+
{
182+
return getProject(ppath);
183+
}
184+
185+
const Project &Config::getDefaultProject(const ProjectPath &ppath) const
186+
{
187+
return getProject(ppath);
186188
}
187189

188190
void Config::process(const path &p) const

src/common/config.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,10 @@ struct Config
6262

6363
auto &getProjects() { return projects; }
6464
auto &getProjects() const { return projects; }
65-
Project &getDefaultProject();
66-
const Project &getDefaultProject() const;
67-
Project &getProject(const String &p) const;
65+
Project &getDefaultProject(const ProjectPath &ppath = ProjectPath());
66+
const Project &getDefaultProject(const ProjectPath &ppath = ProjectPath()) const;
67+
Project &getProject(const ProjectPath &ppath);
68+
const Project &getProject(const ProjectPath &ppath) const;
6869

6970
void setPackage(const Package &pkg);
7071

@@ -78,6 +79,7 @@ struct Config
7879
path dir; // cwd
7980

8081
void addDefaultProject();
82+
Project &getProject1(const ProjectPath &ppath);
8183

8284
public:
8385
bool defaults_allowed = true;

src/common/resolver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ void Resolver::download_and_unpack()
265265
auto c = rd.add_config(d);
266266

267267
// move all files under unpack dir
268-
auto ud = c->getDefaultProject().unpack_directory;
268+
auto ud = c->getDefaultProject(d.ppath).unpack_directory;
269269
if (!ud.empty())
270270
{
271271
ud = version_dir / ud;
@@ -371,7 +371,7 @@ void Resolver::prepare_config(PackageStore::PackageConfigs::value_type &cc)
371371
auto &c = cc.second.config;
372372
auto &dependencies = cc.second.dependencies;
373373
c->setPackage(p);
374-
auto &project = c->getDefaultProject();
374+
auto &project = c->getDefaultProject(p.ppath);
375375

376376
if (p.flags[pfLocalProject])
377377
return;

0 commit comments

Comments
 (0)