/** * @param $fileLocator ein string wie er aus listFiles herauskommt * @param File $destination der Ort an den die Datei kopiert werden soll */ public function extractFile($fileLocator, WebforgeFile $destination) { $tmp = Dir::createTemporary(); $this->exec('x', array('y'), escapeshellarg($fileLocator) . ' ' . escapeshellarg($tmp)); // suche $file im $tmp verzeichnis $file = File::createFromURL($fileLocator, $tmp); if (!$file->exists()) { throw new Exception(sprintf("Entpacken hat zwar geklappt, aber die Datei '%s' kann nicht in '%s' (temporary) gefunden werden.", (string) $fileLocator, $tmp)); } $file->copy($destination); $tmp->delete(); return $this; }
public function commitSinglePath(WebforgeDir $repositoryDir, $path, $contents, $commitMessage = NULL) { // wir müssen das repository auschecken (geht leider nicht anders) // wir checken das rep leer aus und machen update für den path $repoFile = $repositoryDir->getFile($path); $directoryUrl = clone $repoFile->getDirectory(); $directoryUrl->wrapWith('file'); $wc = Dir::createTemporary(); $this->executeCommand('svn co ' . $directoryUrl . ' ' . $wc->getQuotedString(Dir::WITHOUT_TRAILINGSLASH)); $wcFile = $wc->getFile($repoFile->getName()); // wir haben ja das verzeichnis direkt ausgecheckt, deshalb brauchen wir hier nur den dateinamen $wcFile->writeContents($contents); $this->executeCommand('svn commit' . ($commitMessage ? ' -m' . escapeshellarg($commitMessage) : '') . ' ' . $wcFile->getQuotedString()); $wc->delete(); }