summaryrefslogtreecommitdiffstats
path: root/bitbake/bin/bitbake-prserv
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/bin/bitbake-prserv')
-rwxr-xr-xbitbake/bin/bitbake-prserv114
1 files changed, 84 insertions, 30 deletions
diff --git a/bitbake/bin/bitbake-prserv b/bitbake/bin/bitbake-prserv
index 1e9b6cbc1b..580e021fda 100755
--- a/bitbake/bin/bitbake-prserv
+++ b/bitbake/bin/bitbake-prserv
@@ -1,49 +1,103 @@
1#!/usr/bin/env python3 1#!/usr/bin/env python3
2# 2#
3# Copyright BitBake Contributors
4#
3# SPDX-License-Identifier: GPL-2.0-only 5# SPDX-License-Identifier: GPL-2.0-only
4# 6#
5 7
6import os 8import os
7import sys,logging 9import sys,logging
8import optparse 10import argparse
11import warnings
12warnings.simplefilter("default")
9 13
10sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),'lib')) 14sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), "lib"))
11 15
12import prserv 16import prserv
13import prserv.serv 17import prserv.serv
14 18
15__version__="1.0.0" 19VERSION = "2.0.0"
16 20
17PRHOST_DEFAULT='0.0.0.0' 21PRHOST_DEFAULT="0.0.0.0"
18PRPORT_DEFAULT=8585 22PRPORT_DEFAULT=8585
19 23
24def init_logger(logfile, loglevel):
25 numeric_level = getattr(logging, loglevel.upper(), None)
26 if not isinstance(numeric_level, int):
27 raise ValueError("Invalid log level: %s" % loglevel)
28 FORMAT = "%(asctime)-15s %(message)s"
29 logging.basicConfig(level=numeric_level, filename=logfile, format=FORMAT)
30
20def main(): 31def main():
21 parser = optparse.OptionParser( 32 parser = argparse.ArgumentParser(
22 version="Bitbake PR Service Core version %s, %%prog version %s" % (prserv.__version__, __version__), 33 description="BitBake PR Server. Version=%s" % VERSION,
23 usage = "%prog < --start | --stop > [options]") 34 formatter_class=argparse.RawTextHelpFormatter)
24 35
25 parser.add_option("-f", "--file", help="database filename(default: prserv.sqlite3)", action="store", 36 parser.add_argument(
26 dest="dbfile", type="string", default="prserv.sqlite3") 37 "-f",
27 parser.add_option("-l", "--log", help="log filename(default: prserv.log)", action="store", 38 "--file",
28 dest="logfile", type="string", default="prserv.log") 39 default="prserv.sqlite3",
29 parser.add_option("--loglevel", help="logging level, i.e. CRITICAL, ERROR, WARNING, INFO, DEBUG", 40 help="database filename (default: prserv.sqlite3)",
30 action = "store", type="string", dest="loglevel", default = "INFO") 41 )
31 parser.add_option("--start", help="start daemon", 42 parser.add_argument(
32 action="store_true", dest="start") 43 "-l",
33 parser.add_option("--stop", help="stop daemon", 44 "--log",
34 action="store_true", dest="stop") 45 default="prserv.log",
35 parser.add_option("--host", help="ip address to bind", action="store", 46 help="log filename(default: prserv.log)",
36 dest="host", type="string", default=PRHOST_DEFAULT) 47 )
37 parser.add_option("--port", help="port number(default: 8585)", action="store", 48 parser.add_argument(
38 dest="port", type="int", default=PRPORT_DEFAULT) 49 "--loglevel",
39 50 default="INFO",
40 options, args = parser.parse_args(sys.argv) 51 help="logging level, i.e. CRITICAL, ERROR, WARNING, INFO, DEBUG",
41 prserv.init_logger(os.path.abspath(options.logfile),options.loglevel) 52 )
42 53 parser.add_argument(
43 if options.start: 54 "--start",
44 ret=prserv.serv.start_daemon(options.dbfile, options.host, options.port,os.path.abspath(options.logfile)) 55 action="store_true",
45 elif options.stop: 56 help="start daemon",
46 ret=prserv.serv.stop_daemon(options.host, options.port) 57 )
58 parser.add_argument(
59 "--stop",
60 action="store_true",
61 help="stop daemon",
62 )
63 parser.add_argument(
64 "--host",
65 help="ip address to bind",
66 default=PRHOST_DEFAULT,
67 )
68 parser.add_argument(
69 "--port",
70 type=int,
71 default=PRPORT_DEFAULT,
72 help="port number (default: 8585)",
73 )
74 parser.add_argument(
75 "-r",
76 "--read-only",
77 action="store_true",
78 help="open database in read-only mode",
79 )
80 parser.add_argument(
81 "-u",
82 "--upstream",
83 default=os.environ.get("PRSERVER_UPSTREAM", None),
84 help="Upstream PR service (host:port)",
85 )
86
87 args = parser.parse_args()
88 init_logger(os.path.abspath(args.log), args.loglevel)
89
90 if args.start:
91 ret=prserv.serv.start_daemon(
92 args.file,
93 args.host,
94 args.port,
95 os.path.abspath(args.log),
96 args.read_only,
97 args.upstream
98 )
99 elif args.stop:
100 ret=prserv.serv.stop_daemon(args.host, args.port)
47 else: 101 else:
48 ret=parser.print_help() 102 ret=parser.print_help()
49 return ret 103 return ret