diff options
Diffstat (limited to 'bitbake/bin/bitbake-prserv')
-rwxr-xr-x | bitbake/bin/bitbake-prserv | 114 |
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 | ||
6 | import os | 8 | import os |
7 | import sys,logging | 9 | import sys,logging |
8 | import optparse | 10 | import argparse |
11 | import warnings | ||
12 | warnings.simplefilter("default") | ||
9 | 13 | ||
10 | sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),'lib')) | 14 | sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), "lib")) |
11 | 15 | ||
12 | import prserv | 16 | import prserv |
13 | import prserv.serv | 17 | import prserv.serv |
14 | 18 | ||
15 | __version__="1.0.0" | 19 | VERSION = "2.0.0" |
16 | 20 | ||
17 | PRHOST_DEFAULT='0.0.0.0' | 21 | PRHOST_DEFAULT="0.0.0.0" |
18 | PRPORT_DEFAULT=8585 | 22 | PRPORT_DEFAULT=8585 |
19 | 23 | ||
24 | def 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 | |||
20 | def main(): | 31 | def 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 |