]> git.tdb.fi Git - builder.git/blobdiff - source/datatransform.cpp
Don't complain about missing executable if a tool has no command
[builder.git] / source / datatransform.cpp
index 7b221b3c0bc7e16c4cf4088873d12770bfced578..01d237b93daf028fb8e2f5c7b68c3e380eddc275 100644 (file)
@@ -1,7 +1,6 @@
 #include <msp/fs/dir.h>
 #include <msp/fs/stat.h>
 #include <msp/fs/utils.h>
-#include <msp/strings/format.h>
 #include <msp/strings/regex.h>
 #include "builder.h"
 #include "cache.h"
@@ -24,14 +23,14 @@ DataTransform::DataTransform(Builder &b, const Component &c, const FS::Path &p):
 
 void DataTransform::find_dependencies()
 {
-       list<string> files;
+       vector<string> files;
        Cache &cache = component->get_package().get_cache();
        const Time::TimeStamp &cache_mtime = cache.get_mtime();
        if(mtime<cache_mtime && dir_mtime<cache_mtime && cache.has_key(this, "files"))
                files = cache.get_values(this, "files");
        else
        {
-               builder.get_logger().log("files", format("Reading imports from %s", path.str()));
+               builder.get_logger().log("files", "Reading imports from %s", path.str());
                IO::File in(path.str());
                DataFile::Parser parser(in, path.str());
 
@@ -45,16 +44,16 @@ void DataTransform::find_dependencies()
                                if(dir_files.empty())
                                {
                                        FS::Path dir = FS::dirname(path);
-                                       builder.get_logger().log("files", format("Traversing %s", dir.str()));
+                                       builder.get_logger().log("files", "Traversing %s", dir.str());
                                        dir_files = list_files(dir);
                                }
 
-                               for(DataFile::Statement::Arguments::const_iterator i=st.args.begin(); i!=st.args.end(); ++i)
+                               for(const DataFile::Value &a: st.args)
                                {
-                                       Regex re(i->get<string>());
-                                       for(vector<string>::const_iterator j=dir_files.begin(); j!=dir_files.end(); ++j)
-                                               if(re.match(*j))
-                                                       files.push_back(*j);
+                                       Regex re(a.get<string>());
+                                       for(const string &f: dir_files)
+                                               if(re.match(f))
+                                                       files.push_back(f);
                                }
                        }
                        else if(st.keyword=="file" && st.args.size()==1)
@@ -64,9 +63,9 @@ void DataTransform::find_dependencies()
                cache.set_values(this, "files", files);
        }
 
-       for(list<string>::iterator i=files.begin(); i!=files.end(); ++i)
+       for(const string &f: files)
        {
-               FS::Path file_path = FS::dirname(path)/ *i;
+               FS::Path file_path = FS::dirname(path)/f;
                if(Target *tgt = builder.get_vfs().get_target(file_path))
                        add_transitive_dependency(*tgt);
                else