From: Alexander Kanevskiy Date: Mon, 12 Aug 2013 21:46:58 +0000 (+0300) Subject: patchset-created draft X-Git-Tag: submit/devel/20190730.075356~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3c5d73f6f30aeed2c517aee0a7150fc9bc575d5;p=services%2Fgerrithooks.git patchset-created draft --- diff --git a/gerrithooks/patchset_created.py b/gerrithooks/patchset_created.py index 8d03bcc..d4b8175 100644 --- a/gerrithooks/patchset_created.py +++ b/gerrithooks/patchset_created.py @@ -18,40 +18,27 @@ import os import sys import argparse +import ConfigParser -def get_logger(appname, debug=False): - """Set up syslog logger.""" - logger = logging.getLogger(appname) - logger.setLevel(logging.DEBUG) - formatter = logging.Formatter("%(name)s: %(levelname)s %(message)s") - if debug: - handler = logging.StreamHandler() - else: - if sys.platform == 'darwin': - syslog_socket = "/var/run/syslog" - else: - syslog_socket = "/dev/log" - handler = handlers.SysLogHandler(syslog_socket) - handler.setFormatter(formatter) - logger.addHandler(handler) - return logger +from misc import find_config, configure_logging, daemonize +from pkg_resources import iter_entry_points def parse_cmdline(argv): """Parse hook command line parameters.""" parser = argparse.ArgumentParser( description="Gerrit patchset-created hook") args = ( - "--change", # - "--is-draft", # - "--change-url", # - "--project", # - "--branch", # - "--topic", # - "--uploader", # - "--commit", # - "--patchset" # - ) + "--change", # + "--is-draft", # + "--change-url", # + "--project", # + "--branch", # + "--topic", # + "--uploader", # + "--commit", # + "--patchset" # + ) for arg in args: parser.add_argument(arg) parser.add_argument("-d", "--debug", action="store_true") @@ -64,19 +51,46 @@ def main(): params = parse_cmdline(sys.argv[1:]) # set up logger - logger = get_logger(os.path.basename(argv[0]), params.debug) + logger = configure_logging(os.path.basename(sys.argv[0])) - logger.warning("processing project %s : branch %s, commit %s, change: %s (draft: %s url: %s) topic: %s uploader: %s patchset: %s", + + logger.info("patchset-created: project %s : branch %s, commit %s, change: "\ + "%s (draft: %s url: %s) topic: %s uploader: %s patchset: %s", params.project, params.branch, params.commit, params.change, params.is_draft, params.change_url, params.topic, params.uploader, params.patchset) if not params.debug: + logger.debug("Daemonizing...") daemonize() + logger.debug("looking for config") + confname = "gerrit-hooks.conf" + conf = find_config(confname, subdir="gerrit-hooks") + if not conf: + logger.error("Log configuration file %s not found or not readable" \ + % confname) + return 1 + + # read rules from configuration file + config = ConfigParser.RawConfigParser() + config.optionxform = str + + logger.debug("main: reading config from %s", conf) + config.read(conf) + + entry_point_group = "gerrit-hooks" + logger.debug("main: looking for plugins in entry %s" % entry_point_group) + + for entry_point in iter_entry_points(group=entry_point_group, name="patchset-created"): + logger.debug("Loading plugin %s from %s" % + (entry_point.name, entry_point.module)) + plugin = entry_point.load() + logger.debug("Executing plugin %s" % entry_point.name) + plugin(params=params, config=config) logger.info("done") return 0 if __name__ == "__main__": - sys.exit(main(sys.argv)) + sys.exit(main()) diff --git a/setup.py b/setup.py index 5a060ce..308887f 100755 --- a/setup.py +++ b/setup.py @@ -14,11 +14,12 @@ setup ( name = "gerrit-hooks", version = "0.1.0", packages = find_packages(), - include_package_data=True, license = "GPLv2", description = "Collection of useful hooks for Gerrit", long_description = README, # url = "http://", + include_package_data=True, + data_files=[("/etc/gerrit-hooks", ["gerrit-hooks.conf", "gerrit-hooks-log.conf"])], author = "Alexander Kanevskiy", author_email = "alexander.kanevskiy@intel.com", keywords = "gerrit hooks", @@ -32,7 +33,8 @@ setup ( #'comment-added' #'draft-published' #'merge-failed' - 'patchset-created = gerrithooks.patchset_created:main', + 'gerrit-patchset-created = gerrithooks.patchset_created:main', + # 'ref-update' #'ref-updated' #'reviewer-added' ]