X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdatatransform.cpp;h=2f7e8754b66da94d57eda264608b745f346e8ba3;hb=HEAD;hp=7b221b3c0bc7e16c4cf4088873d12770bfced578;hpb=4ee988cdd18d919b11355c21e5234c3f28f5d6a7;p=builder.git diff --git a/source/datatransform.cpp b/source/datatransform.cpp deleted file mode 100644 index 7b221b3..0000000 --- a/source/datatransform.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include -#include -#include -#include "builder.h" -#include "cache.h" -#include "component.h" -#include "datatransform.h" -#include "file.h" -#include "sourcepackage.h" - -using namespace std; -using namespace Msp; - -DataTransform::DataTransform(Builder &b, const Component &c, const FS::Path &p): - FileTarget(b, c.get_package(), p) -{ - component = &c; - - if(FS::Stat st = FS::lstat(FS::dirname(path))) - dir_mtime = st.get_modify_time(); -} - -void DataTransform::find_dependencies() -{ - list files; - Cache &cache = component->get_package().get_cache(); - const Time::TimeStamp &cache_mtime = cache.get_mtime(); - if(mtime dir_files; - while(!in.eof()) - { - DataFile::Statement st = parser.parse(); - if(st.keyword=="for_each") - { - // There's bound to be at least one file: the transform itself - if(dir_files.empty()) - { - FS::Path dir = FS::dirname(path); - builder.get_logger().log("files", format("Traversing %s", dir.str())); - dir_files = list_files(dir); - } - - for(DataFile::Statement::Arguments::const_iterator i=st.args.begin(); i!=st.args.end(); ++i) - { - Regex re(i->get()); - for(vector::const_iterator j=dir_files.begin(); j!=dir_files.end(); ++j) - if(re.match(*j)) - files.push_back(*j); - } - } - else if(st.keyword=="file" && st.args.size()==1) - files.push_back(st.args.front().get()); - } - - cache.set_values(this, "files", files); - } - - for(list::iterator i=files.begin(); i!=files.end(); ++i) - { - FS::Path file_path = FS::dirname(path)/ *i; - if(Target *tgt = builder.get_vfs().get_target(file_path)) - add_transitive_dependency(*tgt); - else - add_transitive_dependency(*new File(builder, *package, file_path)); - } -}