1*c8dee2aaSAndroid Build Coastguard Worker#!/usr/bin/env python 2*c8dee2aaSAndroid Build Coastguard Worker# 3*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2020 Google Inc. 4*c8dee2aaSAndroid Build Coastguard Worker# 5*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 6*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file. 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Worker"""Bulk abandon Gerrit CLs.""" 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Workerimport argparse 13*c8dee2aaSAndroid Build Coastguard Workerimport os 14*c8dee2aaSAndroid Build Coastguard Workerimport re 15*c8dee2aaSAndroid Build Coastguard Workerimport subprocess 16*c8dee2aaSAndroid Build Coastguard Workerimport sys 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Workerfrom infra import git 19*c8dee2aaSAndroid Build Coastguard Workerfrom infra import go 20*c8dee2aaSAndroid Build Coastguard Worker 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Workerdef run_abandon_cls(args): 23*c8dee2aaSAndroid Build Coastguard Worker """Bulk abandon Gerrit CLs.""" 24*c8dee2aaSAndroid Build Coastguard Worker go.mod_download() 25*c8dee2aaSAndroid Build Coastguard Worker go.install(go.INFRA_GO+'/scripts/abandon_gerrit_cls') 26*c8dee2aaSAndroid Build Coastguard Worker subprocess.check_call([ 27*c8dee2aaSAndroid Build Coastguard Worker 'abandon_gerrit_cls', 28*c8dee2aaSAndroid Build Coastguard Worker '--gerrit_instance', args.gerrit_instance, 29*c8dee2aaSAndroid Build Coastguard Worker '--abandon_reason', args.abandon_reason, 30*c8dee2aaSAndroid Build Coastguard Worker '--last_modified_before_days', str(args.last_modified_before_days), 31*c8dee2aaSAndroid Build Coastguard Worker ]) 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Worker 34*c8dee2aaSAndroid Build Coastguard Workerdef main(): 35*c8dee2aaSAndroid Build Coastguard Worker # TODO(rmistry): Instead of attempting to keep these args in sync, defer to 36*c8dee2aaSAndroid Build Coastguard Worker # abandon_gerrit_cls for argument parsing. 37*c8dee2aaSAndroid Build Coastguard Worker d = 'Helper script for bulk abandoning gerrit CLs' 38*c8dee2aaSAndroid Build Coastguard Worker parser = argparse.ArgumentParser(description=d) 39*c8dee2aaSAndroid Build Coastguard Worker parser.add_argument( 40*c8dee2aaSAndroid Build Coastguard Worker '--gerrit-instance', '-g', default='https://skia-review.googlesource.com', 41*c8dee2aaSAndroid Build Coastguard Worker help='Name of the gerrit instance.') 42*c8dee2aaSAndroid Build Coastguard Worker parser.add_argument( 43*c8dee2aaSAndroid Build Coastguard Worker '--abandon-reason', '-a', default='', 44*c8dee2aaSAndroid Build Coastguard Worker help='Will be used as reason for abandoning.') 45*c8dee2aaSAndroid Build Coastguard Worker parser.add_argument( 46*c8dee2aaSAndroid Build Coastguard Worker '--last-modified-before-days', '-l', default=0, 47*c8dee2aaSAndroid Build Coastguard Worker help='If 3 is specified then all CLs that were modified after 3 days ago ' 48*c8dee2aaSAndroid Build Coastguard Worker 'will be returned.') 49*c8dee2aaSAndroid Build Coastguard Worker args = parser.parse_args() 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker go.check() 52*c8dee2aaSAndroid Build Coastguard Worker run_abandon_cls(args) 53*c8dee2aaSAndroid Build Coastguard Worker 54*c8dee2aaSAndroid Build Coastguard Worker 55*c8dee2aaSAndroid Build Coastguard Workerif __name__ == '__main__': 56*c8dee2aaSAndroid Build Coastguard Worker main() 57