Merge pull request #17023 from civicrm/5.25
[civicrm-core.git] / bin / givi
index 778496315948db73f42c926264f74e4a1d4786e9..b9d80fe14722d96da6d7a469c8c8f1bfffe5e0f9 100755 (executable)
--- a/bin/givi
+++ b/bin/givi
@@ -13,7 +13,7 @@ class DirStack {
   /**
    * @param array $dirs
    */
-  function __construct($dirs = array()) {
+  public function __construct($dirs = array()) {
     $this->dirs = $dirs;
   }
 
@@ -22,17 +22,18 @@ class DirStack {
    *
    * @throws Exception
    */
-  function push($dir) {
+  public function push($dir) {
     $this->dirs[] = getcwd();
     if (!chdir($dir)) {
       throw new Exception("Failed to chdir($dir)");
     }
   }
 
-  function pop() {
+  public function pop() {
     $oldDir = array_pop($this->dirs);
     chdir($oldDir);
   }
+
 }
 
 /**
@@ -94,6 +95,7 @@ class PullRequest {
   public function getRequestorRepoUrl() {
     return $this->data->head->repo->git_url;
   }
+
 }
 
 /**
@@ -184,7 +186,7 @@ class Givi {
   /**
    *
    */
-  function __construct() {
+  public function __construct() {
     $this->dirStack = new DirStack();
     $this->repos = array(
       'core' => '.',
@@ -201,7 +203,7 @@ class Givi {
    *
    * @throws Exception
    */
-  function main($args) {
+  public function main($args) {
     if (!$this->parseOptions($args)) {
       printf("Error parsing arguments\n");
       $this->doHelp();
@@ -228,31 +230,40 @@ class Givi {
       case 'checkout':
         call_user_func_array(array($this, 'doCheckoutAll'), $this->arguments);
         break;
+
       case 'fetch':
         call_user_func_array(array($this, 'doFetchAll'), $this->arguments);
         break;
+
       case 'status':
         call_user_func_array(array($this, 'doStatusAll'), $this->arguments);
         break;
+
       case 'begin':
         call_user_func_array(array($this, 'doBegin'), $this->arguments);
         break;
+
       case 'resume':
         call_user_func_array(array($this, 'doResume'), $this->arguments);
         break;
+
       case 'review':
         call_user_func_array(array($this, 'doReview'), $this->arguments);
         break;
+
       //case 'merge-forward':
       //  call_user_func_array(array($this, 'doMergeForward'), $this->arguments);
       //  break;
+
       case 'push':
         call_user_func_array(array($this, 'doPush'), $this->arguments);
         break;
+
       case 'help':
       case '':
         $this->doHelp();
         break;
+
       default:
         return $this->returnError("unrecognized action: {$this->action}\n");
     }
@@ -271,7 +282,7 @@ class Givi {
    * @param $args
    * @return bool
    */
-  function parseOptions($args) {
+  public function parseOptions($args) {
     $this->branches = array();
     $this->arguments = array();
 
@@ -321,7 +332,7 @@ class Givi {
     return TRUE;
   }
 
-  function doHelp() {
+  public function doHelp() {
     $program = basename($this->program);
     echo "Givi - Coordinate git checkouts across CiviCRM repositories\n";
     echo "Scenario:\n";
@@ -380,7 +391,7 @@ class Givi {
    *
    * @return bool
    */
-  function doCheckoutAll($baseBranch = NULL) {
+  public function doCheckoutAll($baseBranch = NULL) {
     if (!$baseBranch) {
       return $this->returnError("Missing <branch>\n");
     }
@@ -399,7 +410,7 @@ class Givi {
   /**
    * @return bool
    */
-  function doStatusAll() {
+  public function doStatusAll() {
     foreach ($this->repos as $repo => $relPath) {
       $this->run($repo, $relPath, 'git', 'status');
     }
@@ -411,7 +422,7 @@ class Givi {
    *
    * @return bool
    */
-  function doBegin($baseBranch = NULL) {
+  public function doBegin($baseBranch = NULL) {
     if (!$baseBranch) {
       return $this->returnError("Missing <base-branch>\n");
     }
@@ -444,7 +455,7 @@ class Givi {
    * @return bool
    * @throws Exception
    */
-  function doResume($baseBranch = NULL) {
+  public function doResume($baseBranch = NULL) {
     if (!$baseBranch) {
       return $this->returnError("Missing <base-branch>\n");
     }
@@ -475,7 +486,7 @@ class Givi {
    *
    * @return bool
    */
-  function doReview($baseBranch = NULL) {
+  public function doReview($baseBranch = NULL) {
     if (!$this->doCheckoutAll($baseBranch)) {
       return FALSE;
     }
@@ -507,47 +518,13 @@ class Givi {
     return TRUE;
   }
 
-  /*
-
-  If we want merge-forward changes to be subject to PR process, then this
-  should useful.  Currently using a simpler process based on
-  toosl/scripts/merge-forward
-
-  function doMergeForward($maintBranch, $devBranch) {
-    if (!$maintBranch) {
-      return $this->returnError("Missing <maintenace-base-branch>\n");
-    }
-    if (!$devBranch) {
-      return $this->returnError("Missing <development-base-branch>\n");
-    }
-    list ($maintBranchRepo, $maintBranchName) = $this->parseBranchRepo($maintBranch);
-    list ($devBranchRepo, $devBranchName) = $this->parseBranchRepo($devBranch);
-
-    $newBranchRepo = $devBranchRepo;
-    $newBranchName = $maintBranchName . '-' . $devBranchName . '-' . date('Y-m-d-H-i-s');
-
-    if ($this->fetch) {
-      $this->doFetchAll();
-    }
-
-    foreach ($this->repos as $repo => $relPath) {
-      $filteredMaintBranch = $this->filterBranchName($repo, $maintBranch);
-      $filteredDevBranch = $this->filterBranchName($repo, $devBranch);
-      $filteredNewBranchName = $this->filterBranchName($repo, $newBranchName);
-
-      $this->run($repo, $relPath, 'git', 'checkout', '-b', $filteredNewBranchName, $filteredDevBranch);
-      $this->run($repo, $relPath, 'git', 'merge', $filteredMaintBranch);
-    }
-  }
-  */
-
   /**
    * @param $newBranchRepo
    * @param $newBranchNames
    *
    * @return bool
    */
-  function doPush($newBranchRepo, $newBranchNames) {
+  public function doPush($newBranchRepo, $newBranchNames) {
     if (!$newBranchRepo) {
       return $this->returnError("Missing <remote>\n");
     }
@@ -580,7 +557,7 @@ class Givi {
    * @param string $name branch name
    * @return bool
    */
-  function hasLocalBranch($repo, $name) {
+  public function hasLocalBranch($repo, $name) {
     $path = $this->repos[$repo] . '/.git/refs/heads/' . $name;
     return file_exists($path);
   }
@@ -596,7 +573,7 @@ class Givi {
    * @throws Exception
    * @return array
    */
-  function parseBranchRepo($ref, $defaultRemote = 'origin') {
+  public function parseBranchRepo($ref, $defaultRemote = 'origin') {
     $parts = explode('/', $ref);
     if (count($parts) == 1) {
       return array($defaultRemote, $parts[1]);
@@ -620,7 +597,7 @@ class Givi {
    *
    * @return string
    */
-  function run($repoName, $runDir, $command) {
+  public function run($repoName, $runDir, $command) {
     $this->dirStack->push($runDir);
 
     $args = func_get_args();
@@ -644,7 +621,7 @@ class Givi {
     return $r;
   }
 
-  function doFetchAll() {
+  public function doFetchAll() {
     foreach ($this->repos as $repo => $relPath) {
       $this->run($repo, $relPath, 'git', 'fetch', '--all');
     }
@@ -656,7 +633,7 @@ class Givi {
    *
    * @return array ($repoName => $gitRef)
    */
-  function resolveBranches($default, $overrides) {
+  public function resolveBranches($default, $overrides) {
     $branches = $overrides;
     foreach ($this->repos as $repo => $relPath) {
       if (!isset($branches[$repo])) {
@@ -672,7 +649,7 @@ class Givi {
    *
    * @return string
    */
-  function filterBranchName($repoName, $branchName) {
+  public function filterBranchName($repoName, $branchName) {
     if ($branchName == '') {
       return '';
     }
@@ -698,7 +675,7 @@ class Givi {
    * @throws Exception
    * @return array ($repoName => $repoDir)
    */
-  function filterRepos($filter, $repos) {
+  public function filterRepos($filter, $repos) {
     if ($filter == 'all') {
       return $repos;
     }
@@ -720,11 +697,12 @@ class Givi {
    *
    * @return bool
    */
-  function returnError($message) {
+  public function returnError($message) {
     echo "\nERROR: ", $message, "\n\n";
     $this->doHelp();
     return FALSE;
   }
+
 }
 
 /**
@@ -737,7 +715,7 @@ class HttpClient {
    *
    * @return bool
    */
-  static function download($url, $file) {
+  public static function download($url, $file) {
     // PHP native client is unreliable PITA for HTTPS
     if (exec("which wget")) {
       self::run('wget', '-q', '-O', $file, $url);
@@ -755,7 +733,7 @@ class HttpClient {
    *
    * @return mixed
    */
-  static function getJson($url) {
+  public static function getJson($url) {
     $file = tempnam(sys_get_temp_dir(), 'givi-json-');
     HttpClient::download($url, $file);
     $data = json_decode(file_get_contents($file));
@@ -773,7 +751,7 @@ class HttpClient {
    * @internal param string $runDir
    * @return string
    */
-  static function run($command) {
+  public static function run($command) {
     $args = func_get_args();
     array_shift($args);
     foreach ($args as $arg) {
@@ -784,6 +762,7 @@ class HttpClient {
 
     return $r;
   }
+
 }
 
 $givi = new Givi();