Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Applies an issue from Rietveld. | 6 """Applies an issue from Rietveld. |
| 7 """ | 7 """ |
| 8 | 8 |
| 9 import logging | 9 import logging |
| 10 import optparse | 10 import optparse |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 52 parser.error('Extra argument(s) "%s" not understood' % ' '.join(args)) | 52 parser.error('Extra argument(s) "%s" not understood' % ' '.join(args)) |
| 53 if not options.issue: | 53 if not options.issue: |
| 54 parser.error('Require --issue') | 54 parser.error('Require --issue') |
| 55 options.server = options.server.rstrip('/') | 55 options.server = options.server.rstrip('/') |
| 56 if not options.server: | 56 if not options.server: |
| 57 parser.error('Require a valid server') | 57 parser.error('Require a valid server') |
| 58 | 58 |
| 59 obj = rietveld.Rietveld(options.server, '', None) | 59 obj = rietveld.Rietveld(options.server, '', None) |
| 60 try: | 60 try: |
| 61 properties = obj.get_issue_properties(options.issue, False) | 61 properties = obj.get_issue_properties(options.issue, False) |
| 62 except rietveld.upload.ClientLoginError: | 62 except rietveld.upload.ClientLoginError, e: |
| 63 # Requires login. | 63 if sys.stdout.closed: |
| 64 print >> sys.stderr, 'Accessing the issue requires login.' | |
|
M-A Ruel
2012/09/03 17:34:25
Hopefully, this should refrain from causing times
| |
| 65 return 1 | |
| 66 print('Accessing the issue requires login.') | |
| 64 obj = rietveld.Rietveld(options.server, None, None) | 67 obj = rietveld.Rietveld(options.server, None, None) |
| 65 properties = obj.get_issue_properties(options.issue, False) | 68 properties = obj.get_issue_properties(options.issue, False) |
| 66 | 69 |
| 67 if not options.patchset: | 70 if not options.patchset: |
| 68 options.patchset = properties['patchsets'][-1] | 71 options.patchset = properties['patchsets'][-1] |
| 69 print('No patchset specified. Using patchset %d' % options.patchset) | 72 print('No patchset specified. Using patchset %d' % options.patchset) |
| 70 | 73 |
| 71 print('Downloading the patch.') | 74 print('Downloading the patch.') |
| 72 try: | 75 try: |
| 73 patchset = obj.get_patch(options.issue, options.patchset) | 76 patchset = obj.get_patch(options.issue, options.patchset) |
| 74 except urllib2.HTTPError, e: | 77 except urllib2.HTTPError, e: |
| 75 print >> sys.stderr, ( | 78 print >> sys.stderr, ( |
| 76 'Failed to fetch the patch for issue %d, patchset %d.\n' | 79 'Failed to fetch the patch for issue %d, patchset %d.\n' |
| 77 'Try visiting %s/%d') % ( | 80 'Try visiting %s/%d') % ( |
| 78 options.issue, options.patchset, | 81 options.issue, options.patchset, |
| 79 options.server, options.issue) | 82 options.server, options.issue) |
| 80 return 1 | 83 return 1 |
| 81 for patch in patchset.patches: | 84 for patch in patchset.patches: |
| 82 print(patch) | 85 print(patch) |
| 83 scm_type = scm.determine_scm(options.root_dir) | 86 scm_type = scm.determine_scm(options.root_dir) |
| 84 if scm_type == 'svn': | 87 if scm_type == 'svn': |
| 85 scm_obj = checkout.SvnCheckout(options.root_dir, None, None, None, None) | 88 scm_obj = checkout.SvnCheckout(options.root_dir, None, None, None, None) |
| 86 elif scm_type == 'git': | 89 elif scm_type == 'git': |
| 87 scm_obj = checkout.GitCheckoutBase(options.root_dir, None, None) | 90 scm_obj = checkout.GitCheckoutBase(options.root_dir, None, None) |
| 88 elif scm_type == None: | 91 elif scm_type == None: |
| 89 scm_obj = checkout.RawCheckout(options.root_dir, None) | 92 scm_obj = checkout.RawCheckout(options.root_dir, None, None) |
| 90 else: | 93 else: |
| 91 parser.error('Couldn\'t determine the scm') | 94 parser.error('Couldn\'t determine the scm') |
| 92 | 95 |
| 93 # Apply the patch. | 96 # Apply the patch. |
| 94 try: | 97 try: |
| 95 scm_obj.apply_patch(patchset) | 98 scm_obj.apply_patch(patchset) |
| 96 except checkout.PatchApplicationFailed, e: | 99 except checkout.PatchApplicationFailed, e: |
| 97 print >> sys.stderr, str(e) | 100 print >> sys.stderr, str(e) |
| 98 return 1 | 101 return 1 |
| 99 return 0 | 102 return 0 |
| 100 | 103 |
| 101 | 104 |
| 102 if __name__ == "__main__": | 105 if __name__ == "__main__": |
| 103 fix_encoding.fix_encoding() | 106 fix_encoding.fix_encoding() |
| 104 sys.exit(main()) | 107 sys.exit(main()) |
| OLD | NEW |