public string gitdir;
+ public string git_working_dir;
public bool debug = false;
/**
* index of.. matching gitpath..
*/
public static int indexOf( Array<GitRepo> repos, string gitpath) {
+ // make a fake object to compare against..
+ var test_repo = new GitRepo(gitpath);
+
for(var i =0; i < repos.length; i++) {
- if (repos.index(i).gitdir == gitpath) {
+ if (repos.index(i).gitdir == test_repo.gitdir) {
return i;
}
}
return -1;
}
-
-
-
+
/**
* constructor:
public GitRepo(string path) {
// cal parent?
-
+ this.git_working_dir = path;
this.gitdir = path + "/.git";
if (!FileUtils.test(this.gitdir , FileTest.IS_DIR)) {
this.gitdir = path; // naked...
string[] args = { "git" };
- args += "--git-dir";
- args += this.gitdir;
+ //args += "--git-dir";
+ //args += this.gitdir;
args += "--no-pager";
-
-
-
-
+
//if (this.gitdir != this.repopath) {
// args += "--work-tree";
}
//this.lastCmd = args.join(" ");
- if(this.debug) {
-
- print( string.joinv (", ", args));
- }
+ //if(this.debug) {
+ stdout.printf( "CWD=%s\n", this.git_working_dir );
+ print( string.joinv (" ", args));
+ //}
+
string[] env = {};
string home = "HOME=" + Environment.get_home_dir() ;
env += home ;
//}
- var cfg = new SpawnConfig(this.gitdir, args , env);
+
+ var cfg = new SpawnConfig(this.git_working_dir , args , env);
// may throw error...
var sp = new Spawn(cfg);
-
- //print("GOT: " + output)
+
+ stdout.printf( "GOT: %s\n" , sp.output);
// parse output for some commands ?
return sp.output;
}
*/
public void add (string add)
{
+
+ print("Monitor.add: " + add);
this.top.append_val(add);
}
/**
public void monitor(string path, int depth = 0)
{
- print("ADD: " + path + "\n");
+ stdout.printf("ADD: (%d): %s\n", depth, path);
//depth = typeof(depth) == 'number' ? depth *1 : 0;
depth = depth > 0 ? depth *1 : 0;
var fm = f.monitor(FileMonitorFlags.SEND_MOVED,null); //Gio.FileMonitorFlags.SEND_MOVED
- fm.changed.connect( ( fm, f_orig, of_orig, event_type) => {
- //if (fn) {
- this.onEvent (fm, f_orig, of_orig, event_type ) ;
- // return;
- //}
- //this.onEvent (fm, f_orig, of_orig, event_type ) ;
- });
+ fm.changed.connect( this.onEvent );
this.monitors.append_val(fm);
} catch (Error e) {
// this.initRepo(path);
//}
FileEnumerator file_enum;
+ var cancellable = new Cancellable ();
try {
file_enum = f.enumerate_children(
FileAttribute.STANDARD_DISPLAY_NAME + "," + FileAttribute.STANDARD_TYPE,
- 0, // FileQueryInfoFlags.NONE,
- null);
+ FileQueryInfoFlags.NOFOLLOW_SYMLINKS, // FileQueryInfoFlags.NONE,
+ cancellable);
} catch (Error e) {
// FIXME - show error..
return;
}
FileInfo next_file;
- while (true) {
- try {
- next_file = file_enum.next_file(null);
- } catch (Error e) {
+ while (cancellable.is_cancelled () == false ) {
+ try {
+ next_file = file_enum .next_file (cancellable);
+ } catch(Error e) {
+ print(e.message);
break;
}
+
if (next_file == null) {
break;
}
+
//print("got a file " + next_file.sudo () + '?=' + Gio.FileType.DIRECTORY);
-
+
if (next_file.get_file_type() != FileType.DIRECTORY) {
next_file = null;
continue;
}
-
- if (next_file.get_file_type() ==FileType.SYMBOLIC_LINK) {
+
+
+ //stdout.printf("Monitor.monitor: got file %s : type :%u\n",
+ // next_file.get_display_name(), next_file.get_file_type());
+
+
+ if (next_file.get_is_symlink()) {
next_file = null;
continue;
}
- public void onEvent(FileMonitor fm, File f_orig, File of_orig, FileMonitorEvent event_type)
+ public void onEvent(File f_orig, File? of_orig, FileMonitorEvent event_type)
{
if (this.paused) {
return;
}
- print("onEvent");
+ // print("onEvent\n");
var f = this.realpath(f_orig);
- var of = this.realpath(of_orig);
-
-
MonitorNamePathDir src = new MonitorNamePathDir( f.get_basename(), f.get_path() , Path.get_dirname(f.get_path()));
- MonitorNamePathDir dest = null;
+
- if (of != null) {
- dest = new MonitorNamePathDir( of.get_basename(), of.get_path(), Path.get_dirname(of.get_path()));
-
- }
+
//string event_name = "UKNOWN";
//print ("got event: " + src.toString());
try {
+
switch(event_type) {
case FileMonitorEvent.CHANGED:
src.action = "changed";
return;
case FileMonitorEvent.MOVED: // eg. chmod/chatt
+
+ var of = this.realpath(of_orig);
+ var dest = new MonitorNamePathDir(
+ of.get_basename(),
+ of.get_path(),
+ Path.get_dirname(of.get_path())
+ );
+
+
src.action = "moved";
dest.action = "moved";
this.onMoved(src,dest);
return;
-
+ default:
+ stdout.printf("event type not handled %u", event_type);
+ break;
// rest are mount related - not really relivant.. maybe add later..
}
} catch(Error e) {
}
+
/** override these to do stuff.. */
- public void initRepo(MonitorNamePathDir src) { } // called on startup at the top level repo dir.
- public void onChanged(MonitorNamePathDir src) { }
- public void onChangesDoneHint(MonitorNamePathDir src) { }
- public void onDeleted(MonitorNamePathDir src) { }
- public void onCreated(MonitorNamePathDir src) { }
- public void onAttributeChanged(MonitorNamePathDir src) { }
- public void onMoved(MonitorNamePathDir src,MonitorNamePathDir dest) { }
+ //public void initRepo(MonitorNamePathDir src) { } // called on startup at the top level repo dir.
+ public virtual void onChanged(MonitorNamePathDir src) { }
+ public virtual void onChangesDoneHint(MonitorNamePathDir src) { }
+ public virtual void onDeleted(MonitorNamePathDir src) { }
+ public virtual void onCreated(MonitorNamePathDir src) { }
+ public virtual void onAttributeChanged(MonitorNamePathDir src) { }
+ public virtual void onMoved(MonitorNamePathDir src,MonitorNamePathDir dest) { }
}
print("/proc/%u/cmdline".printf(pid) + "\n");
if (pid > 0 ) {
- FileUtils.get_contents("/proc/%u/cmdline".printf(pid), out cmd, out len);
+ var cf = File.new_for_path("/proc/%u/cmdline".printf(pid));
+ var dis = new DataInputStream (cf.read ());
+ cmd = dis.read_line (null);
+
} else {
cmd = "UNKNOWN";
}
var now = new DateTime.now(new TimeZone.local());
var dir = this.outdir + now.format("/%Y/%m");
+ print(dir + "\n");
+
if (this.lastdir.length < 1 || this.lastdir != dir) {
if (!FileUtils.test(dir, FileTest.IS_DIR)) {
var fname = now.format("/%d") + ".log";
var path = dir + "/" + fname;
- var time = now.format("%H:%i:%s ");
+ var time = now.format("%H:%M:%S ");
+ print("time: " + time + "\n");
var f = File.new_for_path(path);
FileOutputStream ios = f.append_to (FileCreateFlags.NONE);
var data_out = new DataOutputStream (ios);