100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | #!/usr/bin/env php
 | ||
|  | <?php | ||
|  | 
 | ||
|  | /* | ||
|  |  * Copyright 2012 Facebook, Inc. | ||
|  |  * | ||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  |  * you may not use this file except in compliance with the License. | ||
|  |  * You may obtain a copy of the License at | ||
|  |  * | ||
|  |  *   http://www.apache.org/licenses/LICENSE-2.0 | ||
|  |  * | ||
|  |  * Unless required by applicable law or agreed to in writing, software | ||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  |  * See the License for the specific language governing permissions and | ||
|  |  * limitations under the License. | ||
|  |  */ | ||
|  | 
 | ||
|  | $root = dirname(dirname(dirname(__FILE__))); | ||
|  | require_once $root.'/scripts/__init_script__.php'; | ||
|  | 
 | ||
|  | $args = new PhutilArgumentParser($argv); | ||
|  | $args->setTagline('manage open Audit requests'); | ||
|  | $args->setSynopsis(<<<EOSYNOPSIS | ||
|  | **audit.php** __repository_callsign__ | ||
|  |     Close all open audit requests in a repository. This is intended to | ||
|  |     reset the state of an imported repository which triggered a bunch of | ||
|  |     spurious audit requests during import. | ||
|  | 
 | ||
|  | EOSYNOPSIS | ||
|  |   ); | ||
|  | $args->parseStandardArguments(); | ||
|  | $args->parse( | ||
|  |   array( | ||
|  |     array( | ||
|  |       'name'      => 'more', | ||
|  |       'wildcard'  => true, | ||
|  |     ), | ||
|  |   )); | ||
|  | 
 | ||
|  | $more = $args->getArg('more'); | ||
|  | if (count($more) !== 1) { | ||
|  |   $args->printHelpAndExit(); | ||
|  | } | ||
|  | $callsign = reset($more); | ||
|  | 
 | ||
|  | $repository = id(new PhabricatorRepository())->loadOneWhere( | ||
|  |   'callsign = %s', | ||
|  |   $callsign); | ||
|  | if (!$repository) { | ||
|  |   throw new Exception("No repository exists with callsign '{$callsign}'!"); | ||
|  | } | ||
|  | 
 | ||
|  | $ok = phutil_console_confirm( | ||
|  |   'This will reset all open audit requests ("Audit Required" or "Concern '. | ||
|  |   'Raised") for commits in this repository to "Audit Not Required". This '. | ||
|  |   'operation destroys information and can not be undone! Are you sure '. | ||
|  |   'you want to proceed?'); | ||
|  | if (!$ok) { | ||
|  |   echo "OK, aborting.\n"; | ||
|  |   die(1); | ||
|  | } | ||
|  | 
 | ||
|  | echo "Loading commits...\n"; | ||
|  | $all_commits = id(new PhabricatorRepositoryCommit())->loadAllWhere( | ||
|  |   'repositoryID = %d', | ||
|  |   $repository->getID()); | ||
|  | 
 | ||
|  | echo "Clearing audit requests...\n"; | ||
|  | 
 | ||
|  | foreach ($all_commits as $commit) { | ||
|  |   $query = id(new PhabricatorAuditQuery()) | ||
|  |     ->withStatus(PhabricatorAuditQuery::STATUS_OPEN) | ||
|  |     ->withCommitPHIDs(array($commit->getPHID())); | ||
|  |   $requests = $query->execute(); | ||
|  | 
 | ||
|  |   echo "Clearing ".$commit->getPHID()."... "; | ||
|  | 
 | ||
|  |   if (!$requests) { | ||
|  |     echo "nothing to do.\n"; | ||
|  |     continue; | ||
|  |   } else { | ||
|  |     echo count($requests)." requests to clear"; | ||
|  |   } | ||
|  | 
 | ||
|  |   foreach ($requests as $request) { | ||
|  |     $request->setAuditStatus( | ||
|  |       PhabricatorAuditStatusConstants::AUDIT_NOT_REQUIRED); | ||
|  |     $request->save(); | ||
|  |     echo "."; | ||
|  |   } | ||
|  | 
 | ||
|  |   $commit->setAuditStatus(PhabricatorAuditCommitStatusConstants::NONE); | ||
|  |   $commit->save(); | ||
|  |   echo "\n"; | ||
|  | } | ||
|  | 
 | ||
|  | echo "Done.\n"; |