/**
  * Analyse $payload and return TRUE if this plugin should
  * be triggered in processing the payload.
  *
  * @param Payload $payload
  * @return boolean
  */
 public function trigger(Payload $payload)
 {
     $url = $payload->getRepository()->getUrl();
     $branch = $payload->getRepository()->getMasterBranch();
     $isEnabled = (bool) $this->getSettingValue(self::OPTION_ENABLED, TRUE);
     $matchesRepository = $url === $this->getSettingValue(self::OPTION_REPOSITORY, $url);
     $matchesBranch = $payload->getRef() === 'refs/heads/' . $this->getSettingValue(self::OPTION_BRANCH, $branch);
     return $matchesRepository && $matchesBranch && $isEnabled;
 }
 /**
  * Perform whichever task the Plugin should perform based
  * on the payload's data.
  *
  * @param Payload $payload
  * @return void
  */
 public function process(Payload $payload)
 {
     $directory = $this->getDirectorySettingOrFail();
     $branch = $this->getSettingValue(self::OPTION_BRANCH, $payload->getRepository()->getMasterBranch());
     $url = $this->getSettingValue(self::OPTION_REPOSITORY, $payload->getRepository()->getUrl());
     $git = $this->resolveGitCommand();
     $command = array('cd', escapeshellarg($directory), '&&', $git, self::COMMAND, escapeshellarg($url), escapeshellarg($branch));
     if (TRUE === (bool) $this->getSettingValue(self::OPTION_REBASE, FALSE)) {
         $command[] = self::COMMAND_REBASE;
     }
     $output = $this->executeGitCommand($command);
     $payload->getResponse()->addOutputFromPlugin($this, $output);
 }
 /**
  * @param Payload $payload
  * @return string
  */
 protected function getRepositoryPath(Payload $payload)
 {
     $repositoryRelativePath = sprintf($this->getSettingValue(self::OPTION_DIRECTORY), $payload->getRepository()->getName());
     $repositoryBasePath = $this->getSettingValue(self::OPTION_DOCUMENTROOT, '/');
     $repositoryBasePath = sprintf($repositoryBasePath, substr($payload->getRef(), 11));
     $repositoryLocalPath = $repositoryBasePath . $repositoryRelativePath;
     return $repositoryLocalPath;
 }
 /**
  * @param Payload $payload
  */
 public function process(Payload $payload)
 {
     $directory = $this->getDirectorySettingOrFail();
     $directory = sprintf($directory, $payload->getRepository()->getName());
     $git = $this->resolveGitCommand();
     $branch = $this->getSettingValue(self::OPTION_BRANCH, $payload->getRepository()->getMasterBranch());
     $track = $this->getSettingValue(self::OPTION_TRACK, FALSE);
     $noTrack = $this->getSettingValue(self::OPTION_NOTRACK, FALSE);
     $start = $this->getSettingValue(self::OPTION_STARTPOINT);
     $force = $this->getSettingValue(self::OPTION_FORCE, FALSE);
     $detach = $this->getSettingValue(self::OPTION_DETACH, FALSE);
     $orphan = $this->getSettingValue(self::OPTION_ORPHAN, FALSE);
     $newBranch = $this->getSettingValue(self::OPTION_NEWBRANCH, FALSE);
     $command = array($git, self::COMMAND);
     if (TRUE === $noTrack) {
         $command[] = self::COMMAND_NOTRACK;
     } elseif (TRUE === $track) {
         $trackBranch = $this->getSettingValue(self::OPTION_UPSTREAM, $payload->getRepository()->getMasterBranch());
         $command[] = self::COMMAND_TRACK;
         $command[] = escapeshellarg($trackBranch);
     }
     if (TRUE === $force) {
         $command[] = self::COMMAND_FORCE;
     }
     if (TRUE === $orphan) {
         $command[] = self::COMMAND_ORPHAN;
     }
     if (TRUE === $detach) {
         $command[] = self::COMMAND_DETACH;
     }
     if (TRUE === $newBranch) {
         $command[] = self::COMMAND_NEWBRANCH;
     }
     $command[] = escapeshellarg($branch);
     if (NULL !== $start) {
         $command[] = escapeshellarg($start);
     }
     $output = array('Executing Git checkout command: ' . implode(' ', $command));
     $output = array_merge($output, $this->executeGitCommand($command));
     $payload->getResponse()->addOutputFromPlugin($this, $output);
 }
 /**
  * @param Payload $payload
  */
 public function process(Payload $payload)
 {
     $directory = $this->getDirectorySettingOrFail(FALSE);
     $directory = sprintf($directory, $payload->getRepository()->getName());
     $url = $this->getSettingValue(self::OPTION_REPOSITORY, $payload->getRepository()->resolveApiUrl(Repository::API_URL_CLONE));
     $depth = $this->getSettingValue(self::OPTION_DEPTH, 0);
     $git = $this->resolveGitCommand();
     $command = array($git, self::COMMAND);
     if (0 < $depth) {
         $command[] = self::COMMAND_DEPTH;
         $command[] = $depth;
     }
     if (TRUE === (bool) $this->getSettingValue(self::OPTION_SINGLE, FALSE)) {
         $command[] = self::COMMAND_SINGLEBRANCH;
         $command[] = self::COMMAND_BRANCH;
         $command[] = escapeshellarg($this->getSettingValue(self::OPTION_BRANCH, $payload->getRepository()->getMasterBranch()));
     }
     $command[] = escapeshellarg($url);
     $command[] = $directory;
     $output = array('Executing Git clone command: ' . implode(' ', $command));
     $output = array_merge($output, $this->executeGitCommand($command));
     $payload->getResponse()->addOutputFromPlugin($this, $output);
 }
Пример #6
0
function setStatus(\NamelessCoder\Gizzle\Payload $payload, \Milo\Github\Api $api, $state, $buildNumber)
{
    $token = $api->getToken();
    $head = $payload->getHead();
    if (TRUE === empty($token) || TRUE === empty($head)) {
        return;
    }
    $url = sprintf('/repos/%s/%s/statuses/%s', $payload->getRepository()->getOwner()->getName(), $payload->getRepository()->getName(), $head->getId());
    switch ($state) {
        case 'pending':
            $description = 'Waiting to hear from Gizzle...';
            break;
        case 'success':
            $description = 'Gizzle build was successful!';
            break;
        case 'error':
            $description = 'Gizzle reported an error!';
            break;
        case 'failure':
            $description = 'Gizzle was unable to run the build!';
            break;
        default:
    }
    $data = array('state' => $state, 'target_url' => 'http://github.com/NamelessCoder/gizzle', 'context' => $payload->getRepository()->getFullName() . '-gizzle-build-' . $buildNumber, 'description' => $description);
    $api->post($url, $data);
}
 /**
  * @param Payload $payload
  * @return string
  * @throws \RuntimeException
  */
 protected function getWorkingDirectoryName(Payload $payload)
 {
     $directoryName = $this->getExtensionKeyFromUrlParameter();
     if (NULL === $directoryName) {
         $directoryName = $this->getSettingValue(self::OPTION_EXTENSIONKEY, $payload->getRepository()->getName());
     }
     $this->validateExtensionKey($directoryName);
     return $directoryName;
 }