Overview

Namespaces

  • Deliverist
    • Downloader

Classes

  • Deliverist\Downloader\GitDownloader

Interfaces

  • Deliverist\Downloader\IDownloader

Exceptions

  • Deliverist\Downloader\Exception
  • Deliverist\Downloader\GitDownloaderException
  • Overview
  • Namespace
  • Class
 1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 
<?php

    namespace Deliverist\Downloader;

    use CzProject\PathHelper;
    use CzProject\Runner\Runner;
    use Nette\Utils\FileSystem;


    class GitDownloader implements IDownloader
    {
        /** @var string */
        private $url;

        /** @var string */
        private $branch;

        /** @var string */
        private $gitExecutable = 'git';


        /**
         * @param  string
         * @param  string
         */
        public function __construct($url, $branch)
        {
            $this->url = $url;
            $this->branch = $branch;
        }


        /**
         * @param  string
         * @return self
         */
        public function setGitExecutable($gitExecutable)
        {
            $this->gitExecutable = $gitExecutable;
            return $this;
        }


        /**
         * @return string
         */
        public function getLabel()
        {
            return $this->url . ' (' . $this->branch . ')';
        }


        /**
         * @param  string
         * @return void
         * @throws GitDownloaderException
         */
        public function download($directory)
        {
            $directory = PathHelper::absolutizePath($directory);
            @mkdir($directory, 0777, TRUE);

            $runner = new Runner($directory);
            $result = $runner->run(array(
                $this->gitExecutable,
                'clone',
                '--depth' => 50,
                '--branch' => $this->branch,
                $this->url,
                $directory,
            ));

            if (!$result->isOk()) {
                throw new GitDownloaderException("Cloning of '{$this->url}' failed.");
            }

            FileSystem::delete($directory . '/.git');
        }
    }


    class GitDownloaderException extends Exception
    {
    }
deliverist/downloader master API documentation API documentation generated by ApiGen