MTrack/SCM/WorkingCopy.php
[web.mtrack] / MTrack / SCM / WorkingCopy.php
index e69de29..df9f596 100644 (file)
@@ -0,0 +1,71 @@
+<?php
+abstract class MTrack_SCM_WorkingCopy {
+    public $dir;
+  
+    /** returns the root dir of the working copy */
+    function getDir() {
+        return $this->dir;
+    }
+  
+    /** add a file to the working copy */
+    abstract function addFile($path);
+    /** removes a file from the working copy */
+    abstract function delFile($path);
+    /** commit changes that are pending in the working copy */
+    abstract function commit($CS);
+    /** get an MTrackSCMFile representation of a file */
+    abstract function getFile($path);
+  
+    /** enumerates files in a path in the working copy */
+    function enumFiles($path)
+    {
+        return scandir($this->dir . DIRECTORY_SEPARATOR . $path);
+    }
+  
+    /** determines if a file exists in the working copy */
+    function file_exists($path)
+    {
+      return file_exists($this->dir . DIRECTORY_SEPARATOR . $path);
+    }
+  
+    function __destruct()
+    {
+        if (strlen($this->dir) > 1) {
+            require_once 'System.php';
+            
+            //System::rm('-r', $this->dir);
+        }
+    }
+    
+    function rmdir($dir) {
+        require_once 'System.php';
+        $rm = System::which('rm');
+        $cmd = "$rm -rf " . escapeshellarg($dir);
+        `$cmd`;
+        
+        
+    }
+    
+    function generateTempDir()
+    {
+        
+        $tn =  '/var/lib/php5/mtrackworkingdirlEwD96a';
+        if (file_exists($tn)) {
+            $this->rmdir($tn);
+        }
+        clearstatcache();
+        if (file_exists($tn)) {
+            die("OOPS");
+        }
+        return $tn;
+
+        $tn = tempnam(ini_get('session.save_path'),'mtrackworkingdir');
+        unlink($tn);
+        return $tn;
+        
+        
+    }
+    
+    
+}