fix installer tempdir usage
[pharext/pharext] / src / pharext / Installer.php
index b41d7fdea4ffc43f0b56f74c4512fe56fa15f549..7866b65a160711009ee1e6ee32ae91bdebdc7c46 100644 (file)
@@ -64,17 +64,17 @@ class Installer implements Command
         */
        public function run($argc, array $argv) {
                $this->cwd = getcwd();
-               $this->tmp = $this->tempname(basename(Phar::running(false)));
+               $this->tmp = new Tempdir(basename(Phar::running(false)));
 
                $phar = new Phar(Phar::running(false));
                foreach ($phar as $entry) {
                        if (fnmatch("*.ext.phar*", $entry->getBaseName())) {
                                $temp = new Tempdir($entry->getBaseName());
                                $phar->extractTo($temp, $entry->getFilename(), true);
-                               $phars[$temp] = new Phar($temp."/".$entry->getFilename());
+                               $phars[(string) $temp] = new Phar($temp."/".$entry->getFilename());
                        }
                }
-               $phars[$this->tmp] = $phar;
+               $phars[(string) $this->tmp] = $phar;
 
                foreach ($phars as $phar) {
                        if (isset($phar["pharext_install.php"])) {
@@ -179,7 +179,9 @@ class Installer implements Command
                
                        // install
                        $this->info("Running make install ... ");
-                       $cmd->setSu($this->args->sudo);
+                       if (isset($this->args->sudo)) {
+                               $cmd->setSu($this->args->sudo);
+                       }
                        if ($this->args->verbose) {
                                $cmd->run(["install"]);
                        } else {
@@ -258,20 +260,26 @@ class Installer implements Command
                                $this->info("Running INI owner transfer ... ");
                                $ugid = sprintf("%d:%d", $stat["uid"], $stat["gid"]);
                                $cmd = new ExecCmd("chown", $this->args->verbose);
-                               $cmd->setSu($this->args->sudo);
+                               if (isset($this->args->sudo)) {
+                                       $cmd->setSu($this->args->sudo);
+                               }
                                $cmd->run([$ugid, $path]);
                                $this->info("OK\n");
                                
                                $this->info("Running INI permission transfer ... ");
                                $perm = decoct($stat["mode"] & 0777);
                                $cmd = new ExecCmd("chmod", $this->args->verbose);
-                               $cmd->setSu($this->args->sudo);
+                               if (isset($this->args->sudo)) {
+                                       $cmd->setSu($this->args->sudo);
+                               }
                                $cmd->run([$perm, $path]);
                                $this->info("OK\n");
        
                                $this->info("Running INI activation ... ");
                                $cmd = new ExecCmd("mv", $this->args->verbose);
-                               $cmd->setSu($this->args->sudo);
+                               if (isset($this->args->sudo)) {
+                                       $cmd->setSu($this->args->sudo);
+                               }
                                $cmd->run([$path, $file]);
                                $this->info("OK\n");
                        } catch (\Exception $e) {