105 #ifndef ROSPACK_ROSPACK_H
106 #define ROSPACK_ROSPACK_H
108 #include <boost/tr1/unordered_set.hpp>
109 #include <boost/tr1/unordered_map.hpp>
116 #if 1 // def ROSPACK_API_BACKCOMPAT_V1
117 #include "rospack/rospack_backcompat.h"
132 class DirectoryCrawlRecord;
142 std::string manifest_name_;
143 std::string cache_name_;
148 std::vector<std::string> search_paths_;
149 std::tr1::unordered_set<std::string> dups_;
150 std::tr1::unordered_map<std::string, Stackage*> stackages_;
151 Stackage* findWithRecrawl(
const std::string& name);
152 void log(
const std::string& level,
const std::string& msg,
bool append_errno);
153 void addStackage(
const std::string& path);
154 void crawlDetail(
const std::string& path,
157 bool collect_profile_data,
158 std::vector<DirectoryCrawlRecord*>& profile_data,
159 std::tr1::unordered_set<std::string>& profile_hash);
160 bool depsOnDetail(
const std::string& name,
bool direct,
161 std::vector<Stackage*>&
deps);
162 bool depsDetail(
const std::string& name,
bool direct,
163 std::vector<Stackage*>& deps);
164 bool isStackage(
const std::string& path);
165 void loadManifest(Stackage* stackage);
166 void computeDeps(Stackage* stackage,
bool ignore_errors=
false);
167 void gatherDeps(Stackage* stackage,
bool direct,
168 traversal_order_t order,
169 std::vector<Stackage*>& deps);
170 void gatherDepsFull(Stackage* stackage,
bool direct,
171 traversal_order_t order,
int depth,
172 std::tr1::unordered_set<Stackage*>& deps_hash,
173 std::vector<Stackage*>& deps,
174 bool get_indented_deps,
175 std::vector<std::string>& indented_deps);
176 std::string getCachePath();
179 FILE* validateCache();
180 bool expandExportString(Stackage* stackage,
181 const std::string& instring,
182 std::string& outstring);
183 void depsWhyDetail(Stackage* from,
185 std::list<std::list<Stackage*> >& acc_list);
197 const std::string& cache_name,
198 const std::string& name,
199 const std::string& tag);
211 virtual const char*
usage() {
return ""; }
223 void crawl(std::vector<std::string> search_path,
bool force);
258 bool find(
const std::string& name, std::string& path);
265 bool contents(
const std::string& name, std::set<std::string>& packages);
273 bool contains(
const std::string& name,
281 void list(std::set<std::pair<std::string, std::string> >&
list);
298 bool deps(
const std::string& name,
bool direct, std::vector<std::string>& deps);
309 bool depsOn(
const std::string& name,
bool direct,
310 std::vector<std::string>& deps);
323 std::vector<std::string>& manifests);
337 bool depsMsgSrv(
const std::string& name,
bool direct,
338 std::vector<std::string>& gens);
360 bool depsIndent(
const std::string& name,
bool direct,
361 std::vector<std::string>& deps);
378 bool depsWhy(
const std::string& from,
379 const std::string& to,
380 std::string& output);
392 bool rosdeps(
const std::string& name,
bool direct,
393 std::set<std::string>&
rosdeps);
406 bool vcs(
const std::string& name,
bool direct,
407 std::vector<std::string>&
vcs);
420 bool exports(
const std::string& name,
const std::string& lang,
421 const std::string& attrib,
bool deps_only,
422 std::vector<std::string>& flags);
434 bool plugins(
const std::string& name,
const std::string& attrib,
435 const std::string& top,
436 std::vector<std::string>& flags);
462 bool profile(
const std::vector<std::string>& search_path,
465 std::vector<std::string>& dirs);
472 void logWarn(
const std::string& msg,
473 bool append_errno =
false);
480 void logError(
const std::string& msg,
481 bool append_errno =
false);
499 virtual const char*
usage();
517 virtual const char*
usage();