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 # Copyright (C) 2008 Evan Martin <martine@danga.com> | 6 # Copyright (C) 2008 Evan Martin <martine@danga.com> |
7 | 7 |
8 """A git-command for integrating reviews on Rietveld and Gerrit.""" | 8 """A git-command for integrating reviews on Rietveld and Gerrit.""" |
9 | 9 |
10 from __future__ import print_function | 10 from __future__ import print_function |
(...skipping 1719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1730 return 'waiting' | 1730 return 'waiting' |
1731 | 1731 |
1732 def UpdateDescriptionRemote(self, description): | 1732 def UpdateDescriptionRemote(self, description): |
1733 return self.RpcServer().update_description( | 1733 return self.RpcServer().update_description( |
1734 self.GetIssue(), self.description) | 1734 self.GetIssue(), self.description) |
1735 | 1735 |
1736 def CloseIssue(self): | 1736 def CloseIssue(self): |
1737 return self.RpcServer().close_issue(self.GetIssue()) | 1737 return self.RpcServer().close_issue(self.GetIssue()) |
1738 | 1738 |
1739 def SetFlag(self, flag, value): | 1739 def SetFlag(self, flag, value): |
1740 """Patchset must match.""" | 1740 return self.SetFlags({flag: value}) |
| 1741 |
| 1742 def SetFlags(self, flags): |
| 1743 """Sets flags on this CL/patchset in Rietveld. |
| 1744 |
| 1745 The latest patchset in Rietveld must be the same as latest known locally. |
| 1746 """ |
1741 if not self.GetPatchset(): | 1747 if not self.GetPatchset(): |
1742 DieWithError('The patchset needs to match. Send another patchset.') | 1748 DieWithError('The patchset needs to match. Send another patchset.') |
1743 try: | 1749 try: |
1744 return self.RpcServer().set_flag( | 1750 return self.RpcServer().set_flags( |
1745 self.GetIssue(), self.GetPatchset(), flag, value) | 1751 self.GetIssue(), self.GetPatchset(), flags) |
1746 except urllib2.HTTPError as e: | 1752 except urllib2.HTTPError as e: |
1747 if e.code == 404: | 1753 if e.code == 404: |
1748 DieWithError('The issue %s doesn\'t exist.' % self.GetIssue()) | 1754 DieWithError('The issue %s doesn\'t exist.' % self.GetIssue()) |
1749 if e.code == 403: | 1755 if e.code == 403: |
1750 DieWithError( | 1756 DieWithError( |
1751 ('Access denied to issue %s. Maybe the patchset %s doesn\'t ' | 1757 ('Access denied to issue %s. Maybe the patchset %s doesn\'t ' |
1752 'match?') % (self.GetIssue(), self.GetPatchset())) | 1758 'match?') % (self.GetIssue(), self.GetPatchset())) |
1753 raise | 1759 raise |
1754 | 1760 |
1755 def RpcServer(self): | 1761 def RpcServer(self): |
(...skipping 28 matching lines...) Expand all Loading... |
1784 return self.RpcServer() | 1790 return self.RpcServer() |
1785 | 1791 |
1786 def SetCQState(self, new_state): | 1792 def SetCQState(self, new_state): |
1787 props = self.GetIssueProperties() | 1793 props = self.GetIssueProperties() |
1788 if props.get('private'): | 1794 if props.get('private'): |
1789 DieWithError('Cannot set-commit on private issue') | 1795 DieWithError('Cannot set-commit on private issue') |
1790 | 1796 |
1791 if new_state == _CQState.COMMIT: | 1797 if new_state == _CQState.COMMIT: |
1792 self.SetFlag('commit', '1') | 1798 self.SetFlag('commit', '1') |
1793 elif new_state == _CQState.NONE: | 1799 elif new_state == _CQState.NONE: |
1794 self.SetFlag('commit', '0') | 1800 self.SetFlags({'commit': '0', 'cq_dry_run': '0'}) |
1795 else: | 1801 else: |
1796 raise NotImplementedError() | 1802 assert new_state == _CQState.DRY_RUN |
| 1803 self.SetFlags({'commit': '1', 'cq_dry_run': '1'}) |
1797 | 1804 |
1798 | 1805 |
1799 def CMDPatchWithParsedIssue(self, parsed_issue_arg, reject, nocommit, | 1806 def CMDPatchWithParsedIssue(self, parsed_issue_arg, reject, nocommit, |
1800 directory): | 1807 directory): |
1801 # TODO(maruel): Use apply_issue.py | 1808 # TODO(maruel): Use apply_issue.py |
1802 | 1809 |
1803 # PatchIssue should never be called with a dirty tree. It is up to the | 1810 # PatchIssue should never be called with a dirty tree. It is up to the |
1804 # caller to check this, but just in case we assert here since the | 1811 # caller to check this, but just in case we assert here since the |
1805 # consequences of the caller not checking this could be dire. | 1812 # consequences of the caller not checking this could be dire. |
1806 assert(not git_common.is_dirty_git_tree('apply')) | 1813 assert(not git_common.is_dirty_git_tree('apply')) |
(...skipping 3290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5097 if __name__ == '__main__': | 5104 if __name__ == '__main__': |
5098 # These affect sys.stdout so do it outside of main() to simplify mocks in | 5105 # These affect sys.stdout so do it outside of main() to simplify mocks in |
5099 # unit testing. | 5106 # unit testing. |
5100 fix_encoding.fix_encoding() | 5107 fix_encoding.fix_encoding() |
5101 setup_color.init() | 5108 setup_color.init() |
5102 try: | 5109 try: |
5103 sys.exit(main(sys.argv[1:])) | 5110 sys.exit(main(sys.argv[1:])) |
5104 except KeyboardInterrupt: | 5111 except KeyboardInterrupt: |
5105 sys.stderr.write('interrupted\n') | 5112 sys.stderr.write('interrupted\n') |
5106 sys.exit(1) | 5113 sys.exit(1) |
OLD | NEW |