#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'''
This scripts runs the server part of a job.
'''

import argparse

from hateno.job import JobServer
from hateno.utils import jsonfiles

def addArguments(parser):
	parser.add_argument('--log', type = str, help = 'log file to write')
	parser.add_argument('cmd_list', type = str, help = 'path to the file where the command lines are stored')
	parser.add_argument('job_dir', type = str, help = 'path to the job directory that will be created to store the messaging files')

def main(args):
	with JobServer(args.cmd_list, args.job_dir) as server:
		server.events.addListener('client-new', lambda id: print(f'New client: {id}'))
		server.events.addListener('client-gone', lambda id: print(f'Client gone: {id}'))
		server.events.addListener('sent', lambda cmd, id: print(f'Command line sent to {id}:\n{cmd}'))
		server.events.addListener('log', lambda log: print(f'New result logged:\n{log}'))

		if args.log is not None:
			server.events.addListener('log', lambda log: jsonfiles.write(server.log, args.log))

		server.run()

if __name__ == '__main__':
	parser = argparse.ArgumentParser(description = 'Run the server part of a job')
	addArguments(parser)
	main(parser.parse_args())
