1*4882a593Smuzhiyun#!/usr/bin/env python3 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# Copyright BitBake Contributors 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 6*4882a593Smuzhiyun# 7*4882a593Smuzhiyun 8*4882a593Smuzhiyunimport os 9*4882a593Smuzhiyunimport sys,logging 10*4882a593Smuzhiyunimport optparse 11*4882a593Smuzhiyunimport warnings 12*4882a593Smuzhiyunwarnings.simplefilter("default") 13*4882a593Smuzhiyun 14*4882a593Smuzhiyunsys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),'lib')) 15*4882a593Smuzhiyun 16*4882a593Smuzhiyunimport prserv 17*4882a593Smuzhiyunimport prserv.serv 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun__version__="1.0.0" 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunPRHOST_DEFAULT='0.0.0.0' 22*4882a593SmuzhiyunPRPORT_DEFAULT=8585 23*4882a593Smuzhiyun 24*4882a593Smuzhiyundef main(): 25*4882a593Smuzhiyun parser = optparse.OptionParser( 26*4882a593Smuzhiyun version="Bitbake PR Service Core version %s, %%prog version %s" % (prserv.__version__, __version__), 27*4882a593Smuzhiyun usage = "%prog < --start | --stop > [options]") 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun parser.add_option("-f", "--file", help="database filename(default: prserv.sqlite3)", action="store", 30*4882a593Smuzhiyun dest="dbfile", type="string", default="prserv.sqlite3") 31*4882a593Smuzhiyun parser.add_option("-l", "--log", help="log filename(default: prserv.log)", action="store", 32*4882a593Smuzhiyun dest="logfile", type="string", default="prserv.log") 33*4882a593Smuzhiyun parser.add_option("--loglevel", help="logging level, i.e. CRITICAL, ERROR, WARNING, INFO, DEBUG", 34*4882a593Smuzhiyun action = "store", type="string", dest="loglevel", default = "INFO") 35*4882a593Smuzhiyun parser.add_option("--start", help="start daemon", 36*4882a593Smuzhiyun action="store_true", dest="start") 37*4882a593Smuzhiyun parser.add_option("--stop", help="stop daemon", 38*4882a593Smuzhiyun action="store_true", dest="stop") 39*4882a593Smuzhiyun parser.add_option("--host", help="ip address to bind", action="store", 40*4882a593Smuzhiyun dest="host", type="string", default=PRHOST_DEFAULT) 41*4882a593Smuzhiyun parser.add_option("--port", help="port number(default: 8585)", action="store", 42*4882a593Smuzhiyun dest="port", type="int", default=PRPORT_DEFAULT) 43*4882a593Smuzhiyun parser.add_option("-r", "--read-only", help="open database in read-only mode", 44*4882a593Smuzhiyun action="store_true") 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun options, args = parser.parse_args(sys.argv) 47*4882a593Smuzhiyun prserv.init_logger(os.path.abspath(options.logfile),options.loglevel) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun if options.start: 50*4882a593Smuzhiyun ret=prserv.serv.start_daemon(options.dbfile, options.host, options.port,os.path.abspath(options.logfile), options.read_only) 51*4882a593Smuzhiyun elif options.stop: 52*4882a593Smuzhiyun ret=prserv.serv.stop_daemon(options.host, options.port) 53*4882a593Smuzhiyun else: 54*4882a593Smuzhiyun ret=parser.print_help() 55*4882a593Smuzhiyun return ret 56*4882a593Smuzhiyun 57*4882a593Smuzhiyunif __name__ == "__main__": 58*4882a593Smuzhiyun try: 59*4882a593Smuzhiyun ret = main() 60*4882a593Smuzhiyun except Exception: 61*4882a593Smuzhiyun ret = 1 62*4882a593Smuzhiyun import traceback 63*4882a593Smuzhiyun traceback.print_exc() 64*4882a593Smuzhiyun sys.exit(ret) 65*4882a593Smuzhiyun 66