/** * 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); }
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; }