Пример #1
0
 public static function parseConfiguration($path)
 {
     if (!is_file($path) || !is_readable($path)) {
         throw new \InvalidArgumentException('Path ' . $path . ' is invalid.');
     }
     $config = @json_decode(file_get_contents($path), true);
     if (!is_array($config)) {
         throw new \Exception('Configuration file is invalid.');
     }
     if (!isset($config['name']) || empty($config['name'])) {
         $name = Git::getWorkingDirectory();
         $name = explode(DIRECTORY_SEPARATOR, $name);
         $name = array_pop($name);
         $config['name'] = $name;
     }
     if (!isset($config['servers']) || !is_array($config['servers'])) {
         $config['servers'] = [];
     }
     foreach ($config['servers'] as $k => $server) {
         if (!isset($server['host']) || !isset($server['username']) || !isset($server['password'])) {
             throw new \Exception('Configuration for server ' . $k . ' is invalid.');
         }
         if (!isset($server['port'])) {
             $server['port'] = 21;
         }
         if (!isset($server['path'])) {
             $server['path'] = '/';
         }
         $config['servers'][$k] = $server;
     }
     $config['ignore'] = isset($config['ignore']) && is_array($config['ignore']) ? $config['ignore'] : [];
     $config['ignore'][] = $path;
     $config['ignore'][] = self::EXPORT_DIRECTORY;
     $config['ignore'][] = '.git';
     $config['ignore'][] = '.idea';
     $config['ignore'][] = '.gitignore';
     $config['ignore'][] = '.gitattributes';
     $config['ignore'][] = '.travis.yml';
     $config['ignore'][] = 'LICENSE';
     $config['ignore'][] = 'README.md';
     foreach ($config['ignore'] as $key => $path) {
         if (!file_exists($path)) {
             $path = Git::getWorkingPath($path);
         }
         $path = realpath($path);
         if ($path) {
             $config['ignore'][$key] = $path;
         } else {
             unset($config['ignore'][$key]);
         }
     }
     $config['ignore'] = array_unique($config['ignore']);
     return $config;
 }
Пример #2
0
 public static function getUncommittedFiles()
 {
     $output = self::exec('status --porcelain');
     if (empty($output)) {
         $output = [];
     }
     $output = array_map(function ($path) {
         $path = trim($path);
         $path = explode(' ', $path);
         $path = array_pop($path);
         return Git::getWorkingPath($path);
     }, $output);
     return $output;
 }