コード例 #1
0
 function run($request)
 {
     increase_time_limit_to(3600);
     $modules = GitRepoFinder::get_all_repos();
     $gitUser = Config::inst()->get('GitRepoFinder', "github_user_name");
     $packagistUser = $this->Config()->get("packagist_user_name");
     if ($gitUser && $packagistUser) {
         //all is good ...
     } else {
         user_error("make sure to set your git and packagist usernames via the standard config system");
     }
     $count = 0;
     echo "<h1>Testing " . count($modules) . " modules (git user: {$gitUser} and packagist user: {$packagistUser}) ...</h1>";
     $methodsToCheck = $this->Config()->get("methods_to_check");
     foreach ($modules as $module) {
         $count++;
         $failures = 0;
         echo "<h3><a href=\"https://github.com/" . $gitUser . "/silverstripe-" . $module . "\"></a>{$count}. checking {$module}</h3>";
         foreach ($methodsToCheck as $method) {
             if (!$this->{$method}($module)) {
                 $failures++;
                 DB::alteration_message("bad response for {$method}", "deleted");
             }
         }
         if ($failures == 0) {
             DB::alteration_message("OK", "created");
         }
         ob_flush();
         flush();
     }
     echo "----------------------------- THE END --------------------------";
 }
コード例 #2
0
 /**
  * takes the preloaded modules and
  * adds any other ones you have listed on github
  */
 public static function get_all_repos($username = '', $getNamesWithPrefix = false)
 {
     $oauth_token = GitRepoFinder::Config()->get('github_oauth_token');
     if ($oauth_token) {
         return GitRepoFinder::get_all_repos_oauth($username, $getNamesWithPrefix);
     } else {
         return GitRepoFinder::get_all_repos_no_oauth($username, $getNamesWithPrefix);
     }
 }
コード例 #3
0
 public function run($request)
 {
     increase_time_limit_to(3600);
     //Check temp module folder is empty
     $tempFolder = GitHubModule::Config()->get('absolute_temp_folder');
     $tempDirFiles = scandir($tempFolder);
     if (count($tempDirFiles) > 2) {
         die('<h2>' . $tempFolder . ' is not empty, please delete or move files </h2>');
     }
     //Get list of all modules from GitHub
     $gitUserName = $this->Config()->get('git_user_name');
     $modules = GitRepoFinder::get_all_repos();
     /*$modules = array (
                 'silverstripe-ecommerce_tax',
                 "silverstripe-gift_voucher",
                 "silverstripe-ecommerce_nutritional_products",
                 "silverstripe-ecommerce_countries",
                 "silverstripe-ecommerce_discount_coupon_countries",
                 "silverstripe-templateoverview",
                 "silverstripe-blog_shared_categorisation",
                 "silverstripe-webpack_requirements_backend",
                 "silverstripe-share_this_simple",
                 "silverstripe-phone_field",
                 "silverstripe-perfect_cms_images",
                 "silverstripe-email_address_database_field",
                 "silverstripe-ecommerce_stockists",
                 "silverstripe-ecommerce_dashboard",
                 "silverstripe-ecommerce_cloud_flare_geoip",
                 "silverstripe-comments_add_recaptcha",
                 "silverstripe-table_filter_sort",
                 "silverstripe-email_reminder",
                 "silverstripe-contact_list",
                 "silverstripe-cms_tricks_for_apps",
                 "silverstripe-cms_edit_link_field",
                 "silverstripe-frontendeditor",
                 "silverstripe-assets_sync_one_folder",
                 "silverstripe-payment_omnipay",
                 "silverstripe-sectionizer",
                 "silverstripe-ecommerce_vote",
                 "silverstripe-user_image_upload",
                 "silverstripe-ecommerce_reports",
                 "silverstripe-ecommerce_orderstep_feedback",
                 "silverstripe-silverstripe-ecommerce_orderstep_feedback",
                 "silverstripe-us_phone_number",
                 "silverstripe-title_dataobject",
                 "silverstripe-payment_stripe",
                 "silverstripe-silverstripe-assets_sync_one_folder",
     
                 );*/
     $updateComposerJson = $this->Config()->get('update_composer_json');
     $limitedModules = $this->Config()->get('modules_to_update');
     if ($limitedModules && count($limitedModules)) {
         $modules = array_intersect($modules, $limitedModules);
     }
     /*
      * Get files to add to modules
      * */
     $files = ClassInfo::subclassesFor('AddFileToModule');
     array_shift($files);
     $limitedFileClasses = $this->Config()->get('files_to_update');
     if ($limitedFileClasses && count($limitedFileClasses)) {
         $files = array_intersect($files, $limitedFileClasses);
     }
     /*
      * Get commands to run on modules
      * */
     $commands = ClassInfo::subclassesFor('RunCommandLineMethodOnModule');
     array_shift($commands);
     $limitedCommands = $this->Config()->get('commands_to_run');
     if ($limitedCommands && count($limitedCommands)) {
         $commands = array_intersect($commands, $limitedCommands);
     }
     foreach ($modules as $count => $module) {
         if (stripos($module, 'silverstripe-') === false) {
             $module = "silverstripe-" . $module;
         }
         echo "<h2>" . ($count + 1) . ". " . $module . "</h2>";
         $moduleObject = GitHubModule::get_or_create_github_module($module);
         $this->checkUpdateTag($moduleObject);
         // Check if all necessary files are perfect on GitHub repo already,
         // if so we can skip that module. But! ... if there are commands to run
         // over the files in the repo, then we need to clone the repo anyhow,
         // so skip the check
         if (count($commands) == 0 && !$updateComposerJson) {
             $moduleFilesOK = true;
             foreach ($files as $file) {
                 $fileObj = $file::create($moduleObject);
                 $checkFileName = $fileObj->getFileLocation();
                 $GitHubFileText = $moduleObject->getRawFileFromGithub($checkFileName);
                 if ($GitHubFileText) {
                     $fileCheck = $fileObj->compareWithText($GitHubFileText);
                     if (!$fileCheck) {
                         $moduleFilesOK = false;
                     }
                 } else {
                     $moduleFilesOK = false;
                 }
             }
             if ($moduleFilesOK) {
                 GeneralMethods::outputToScreen("<li> All files in {$module} OK, skipping to next module ... </li>");
                 continue;
             }
         }
         $repository = $moduleObject->checkOrSetGitCommsWrapper($forceNew = true);
         //$this->checkConfigYML($moduleObject);
         if ($updateComposerJson) {
             $composerJsonObj = new ComposerJson($moduleObject);
             $composerJsonObj->updateJsonData();
             $moduleObject->setDescription($composerJsonObj->getDescription());
         }
         foreach ($files as $file) {
             //run file update
             $obj = $file::create($moduleObject);
             $obj->run();
         }
         foreach ($commands as $command) {
             //run file update
             $obj = $command::create($moduleObject->Directory());
             $obj->run();
             //run command
         }
         //Update Repository description
         //$moduleObject->updateGitHubInfo(array());
         if (!$moduleObject->add()) {
             die("ERROR in add");
         }
         if (!$moduleObject->commit()) {
             die("ERROR in commit");
         }
         if (!$moduleObject->push()) {
             die("ERROR in push");
         }
         if (!$moduleObject->removeClone()) {
             die("ERROR in removeClone");
         }
         $moduleObject->addRepoToScrutinzer();
     }
     //to do ..
 }