/**
* Monitor class - handles monitor managment for a large tree...
+ *
+ *
+ * This
*
* usage :
* x = new Monitor({
_this.onEvent(fm, f, of, event_type, uh);
}
- // if we are not at top level.. and there is a .git directory (it's a submodule .. ignore)
- if (depth > 1 && GLib.file_test(path + '/.git' , GLib.FileTest.IS_DIR)) {
- return;
- }
-
-
-
-
+
var f = Gio.file_new_for_path(path);
//var cancel = new Gio.Cancellable ();
if (depth > 0) {
// print("ADD path " + depth + ' ' + path);
}
// iterate children?
-
- if (GLib.file_test(path + '/.git' , GLib.FileTest.IS_DIR) && this.initRepo) {
+ // - this is not used.
+ //if (GLib.file_test(path + '/.git' , GLib.FileTest.IS_DIR) && this.initRepo) {
- this.initRepo(path);
- }
+ // this.initRepo(path);
+ //}
var file_enum = f.enumerate_children(
- onEvent : function(fm, f, of, event_type, uh)
+ realpath : function(file)
+ {
+ if (!file) {
+ return file;
+ }
+
+ if (GLib.file_test(file.get_path(), GLib.FileTest.EXISTS)) {
+ var rp = imports.os.realpath(file.get_path());
+ return Gio.file_new_for_path(rp);
+
+ }
+ // file does not currently exist..
+ // check parent.
+ var bn = file.get_basename();
+ var ar = file.get_path().split('/');
+ ar.pop();
+ var dirname = ar.join('/');
+ var rp = imports.os.realpath(dirname);
+ return Gio.file_new_for_path(rp + '/' + bn);
+
+
+ },
+
+
+
+ onEvent : function(fm, f_orig, of_orig, event_type, uh)
{
if (this.paused) {
return;
}
- print("WAS: " + f.get_path() + "\n");
- var can = Gio.file_new_for_path(imports.os.realpath(f.get_path()));
- print("NOW: " + can.get_path() + "\n");
+ var f = this.realpath(f_orig);
+
+ var of = this.realpath(of_orig);
+
var src = {
- name : can.get_basename(),
- path : can.get_path(),
- dir : GLib.path_get_dirname(can.get_path())
+ name : f.get_basename(),
+ path : f.get_path(),
+ dir : GLib.path_get_dirname(f.get_path())
};
var dest = false;
if (of) {
- can = Gio.file_new_for_path(imports.os.realpath(f.get_path()));
+
dest = {
- name : can.get_basename(),
- path : can.get_path(),
- dir : GLib.path_get_dirname(can.get_path())
+ name : of.get_basename(),
+ path : of.get_path(),
+ dir : GLib.path_get_dirname(of.get_path())
}
}
event_name = i;
}
}
- //print ("got event: " +event_name);
+
+ //print (JSON.stringify([event_name , f.get_path(), of ? of.get_path() : false ] ));
//print ("got src: " + src.toString());
//print ("got event: " + src.toString());
try {