def kajonggServer(): """start the server""" from optparse import OptionParser parser = OptionParser() defaultPort = InternalParameters.defaultPort() parser.add_option('', '--port', dest='port', help=m18n('the server will listen on PORT (%d)' % defaultPort), type=int, default=defaultPort) parser.add_option('', '--socket', dest='socket', help=m18n('the server will listen on SOCKET'), default=None) parser.add_option('', '--db', dest='dbpath', help=m18n('name of the database'), default=None) parser.add_option('', '--local', dest='local', action='store_true', help=m18n('start a local game server'), default=False) parser.add_option('', '--continue', dest='continueServer', action='store_true', help=m18n('do not terminate local game server after last client disconnects'), default=False) parser.add_option('', '--debug', dest='debug', help=Debug.help()) (options, args) = parser.parse_args() if args and ''.join(args): logWarning(m18n('unrecognized arguments:%1', ' '.join(args))) sys.exit(2) InternalParameters.continueServer |= options.continueServer if options.dbpath: InternalParameters.dbPath = os.path.expanduser(options.dbpath) if options.local: InternalParameters.socket = socketName() if options.socket: InternalParameters.socket = options.socket Debug.setOptions(options.debug) Query.dbhandle = initDb() realm = MJRealm() realm.server = MJServer() kajonggPortal = portal.Portal(realm, [DBPasswordChecker()]) # pylint: disable=E1101 # pylint thinks reactor is missing listen* and run loadPredefinedRulesets() try: if InternalParameters.socket: if os.name == 'nt': logInfo('local server listening on 127.0.0.1 port %d' % options.port) reactor.listenTCP(options.port, pb.PBServerFactory(kajonggPortal), interface='127.0.0.1') else: logInfo('local server listening on UNIX socket %s' % InternalParameters.socket) reactor.listenUNIX(InternalParameters.socket, pb.PBServerFactory(kajonggPortal)) else: logInfo('server listening on port %d' % options.port) reactor.listenTCP(options.port, pb.PBServerFactory(kajonggPortal)) except error.CannotListenError, errObj: logWarning(errObj)
def main(): """parse options, play, evaluate results""" global OPTIONS # pylint: disable=global-statement # we want only english in the logs because i18n and friends # behave differently in kde and kde os.environ['LANG'] = 'en_US.UTF-8' (OPTIONS, args) = parse_options() OPTIONS.csv = os.path.expanduser( os.path.join('~', '.kajongg', 'kajongg.csv')) if not os.path.exists(os.path.dirname(OPTIONS.csv)): os.makedirs(os.path.dirname(OPTIONS.csv)) removeInvalidCommits(OPTIONS.csv) improve_options() evaluate(readGames(OPTIONS.csv)) errorMessage = Debug.setOptions(','.join(OPTIONS.debug)) if errorMessage: print(errorMessage) sys.exit(2) if args and ''.join(args): print('unrecognized arguments:', ' '.join(args)) sys.exit(2) print() if OPTIONS.count: doJobs() if OPTIONS.csv: evaluate(readGames(OPTIONS.csv))
def parseOptions(): """parse command line options and save the values""" args = KCmdLineArgs.parsedArgs() Internal.app = APP Options.playOpen |= args.isSet('playopen') Options.showRulesets|= args.isSet('rulesets') Options.rulesetName = str(args.getOption('ruleset')) if args.isSet('host'): Options.host = str(args.getOption('host')) if args.isSet('player'): Options.player = str(args.getOption('player')) if args.isSet('ai'): Options.AI = str(args.getOption('ai')) if args.isSet('csv'): Options.csv = str(args.getOption('csv')) if args.isSet('socket'): Options.socket = str(args.getOption('socket')) SingleshotOptions.game = str(args.getOption('game')) Options.gui |= args.isSet('gui') if args.isSet('table'): SingleshotOptions.table = int(args.getOption('table')) if args.isSet('join'): SingleshotOptions.join = int(args.getOption('join')) Options.demo |= args.isSet('demo') Options.demo |= not Options.gui Internal.autoPlay = Options.demo msg = Debug.setOptions(str(args.getOption('debug'))) if msg: print msg sys.exit(2) from query import initDb if not initDb(): raise SystemExit('Cannot initialize database') initRulesets() Options.fixed = True # may not be changed anymore
def parseArgs(): """as the name says""" from optparse import OptionParser parser = OptionParser() defaultPort = Internal.defaultPort parser.add_option('', '--port', dest='port', help=i18n('the server will listen on PORT (%d)' % defaultPort), type=int, default=defaultPort) parser.add_option('', '--socket', dest='socket', help=i18n('the server will listen on SOCKET'), default=None) parser.add_option('', '--db', dest='dbpath', help=i18n('name of the database'), default=None) parser.add_option( '', '--continue', dest='continueServer', action='store_true', help=i18n( 'do not terminate local game server after last client disconnects' ), default=False) parser.add_option('', '--debug', dest='debug', help=Debug.help()) (options, args) = parser.parse_args() if args and ''.join(args): logWarning(i18n('unrecognized arguments:%1', ' '.join(args))) sys.exit(2) Options.continueServer |= options.continueServer if options.dbpath: Options.dbPath = os.path.expanduser(options.dbpath) if options.socket: Options.socket = options.socket Debug.setOptions(options.debug) Options.fixed = True # may not be changed anymore del parser # makes Debug.gc quieter return options
def main(): """parse options, play, evaluate results""" print (options, args) = parse_options() options = improve_options(options) errorMessage = Debug.setOptions(options.debug) if errorMessage: print errorMessage sys.exit(2) if args and ''.join(args): print 'unrecognized arguments:', ' '.join(args) sys.exit(2) evaluate(readGames(options.csv)) if not options.count and not options.fill: sys.exit(0) if not options.aiVariants: options.aiVariants = 'Default' serverProcesses = startServers(options) try: if options.fill: jobs = proposeGames(readGames(options.csv), options.aiVariants) doJobs(jobs, options, serverProcesses) if options.count: if options.game: games = list( range(int(options.game), options.game + options.count)) else: games = list( int(random.random() * 10**9) for _ in range(options.count)) jobs = [] allAis = options.aiVariants.split(',') for game in games: jobs.extend([(x, game) for x in allAis]) doJobs(jobs, options, serverProcesses) finally: stopServers(serverProcesses) evaluate(readGames(options.csv))
def main(): """parse options, play, evaluate results""" print (options, args) = parse_options() options = improve_options(options) errorMessage = Debug.setOptions(options.debug) if errorMessage: print errorMessage sys.exit(2) if args and ''.join(args): print 'unrecognized arguments:', ' '.join(args) sys.exit(2) evaluate(readGames(options.csv)) if not options.count and not options.fill: sys.exit(0) if not options.aiVariants: options.aiVariants = 'Default' serverProcesses = startServers(options) try: if options.fill: jobs = proposeGames(readGames(options.csv), options.aiVariants) doJobs(jobs, options, serverProcesses) if options.count: if options.game: games = list(range(int(options.game), options.game+options.count)) else: games = list(int(random.random() * 10**9) for _ in range(options.count)) jobs = [] allAis = options.aiVariants.split(',') for game in games: jobs.extend([(x, game) for x in allAis]) doJobs(jobs, options, serverProcesses) finally: stopServers(serverProcesses) evaluate(readGames(options.csv))
def parseOptions(): """parse command line options and save the values""" args = KCmdLineArgs.parsedArgs() Internal.app = APP Options.playOpen |= args.isSet("playopen") Options.showRulesets |= args.isSet("rulesets") Options.rulesetName = str(args.getOption("ruleset")) if args.isSet("host"): Options.host = str(args.getOption("host")) if args.isSet("player"): Options.player = unicodeString(args.getOption("player")) if args.isSet("rounds"): Options.rounds = int(args.getOption("rounds")) if args.isSet("ai"): Options.AI = str(args.getOption("ai")) if args.isSet("csv"): Options.csv = str(args.getOption("csv")) if args.isSet("socket"): Options.socket = str(args.getOption("socket")) if args.isSet("port"): Options.port = str(args.getOption("port")) SingleshotOptions.game = str(args.getOption("game")) Options.gui |= args.isSet("gui") if args.isSet("table"): SingleshotOptions.table = int(args.getOption("table")) if args.isSet("join"): SingleshotOptions.join = int(args.getOption("join")) Options.demo |= args.isSet("demo") Options.demo |= not Options.gui Internal.autoPlay = Options.demo msg = Debug.setOptions(str(args.getOption("debug"))) if msg: Internal.logger.debug(msg) logging.shutdown() sys.exit(2) from query import initDb if not initDb(): raise SystemExit("Cannot initialize database") initRulesets() Options.fixed = True # may not be changed anymore