##// END OF EJS Templates
release: Finish preparation for 4.5.2
release: Finish preparation for 4.5.2

File last commit:

r353:d5c4e7ee default
r1251:416fec79 v4.5.2 stable
Show More
notify.py
91 lines | 2.8 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
# Copyright (C) 2010-2016 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import argparse
from rhodecode_api import RhodeCodeAPI
def add_api_pr_args(parser):
parser.add_argument("--url", help="Rhodecode host url", required=True)
parser.add_argument("--token", help="Rhodecode user token", required=True)
parser.add_argument("--repoid", help="Repo id", required=True)
parser.add_argument("--message", help="Comment to add", required=True)
parser.add_argument("--status", help="Status to set (approved|rejected)")
parser.add_argument(
"--prid",
help="(Optional) Pull request id")
parser.add_argument(
"--commit-id",
help="(Optional) Expected commit ID for source repo")
def get_pr_head(args):
rc = RhodeCodeAPI(args.url, args.token)
pr_info = rc.get_pull_request(
repoid=args.repoid,
pullrequestid=args.prid
)
if pr_info['error']:
return None
return pr_info['result']['source']['reference']['commit_id']
def pr_has_same_head(args):
head_id = get_pr_head(args)
return head_id == args.commit_id
if __name__ == "__main__":
parser = argparse.ArgumentParser()
add_api_pr_args(parser)
args = parser.parse_args()
status = args.status
rc = RhodeCodeAPI(args.url, args.token)
if not (args.prid or args.commit_id):
raise AttributeError('You must specify --prid or --commit-id')
if args.prid:
if args.commit_id and status:
if not pr_has_same_head(args):
# PR updated, don't set status
status = None
resp = rc.comment_pull_request(
repoid=args.repoid,
pullrequestid=int(args.prid),
message=args.message,
status=status
)
elif args.commit_id:
resp = rc.comment_commit(
repoid=args.repoid,
commit_id=args.commit_id,
message=args.message,
status=status,
)
if resp['error']:
raise Exception(resp['error'])
else:
print resp