# -*- coding: windows-1251

#copyright (C) 2016Aleksey Sadovoy <lex@progger.ru>

"""Автоматическое ведение лога при заходе в игру.
В конфиг необходимо добавить экшены на подобии следующих:
#action {^* В связи с проблемами перевода фразы ANYKEY нажмите ENTER} {#autologging.start}
#action {^Пересоединяемся} {#autologging.start}
#action {^Ваша душа вновь вернулась в тело, которое так ждало ее возвращения!} {#autologging.start}
#action {^До встречи на земле Киевской.} {#autologging.stop}

В качестве аргумента команде #autologging.start можно передавать имя персонажа, иначе будет браться название текущей сессии.
"""

import os
import time
from lyntin import exported
from lyntin.modules import modutils

commands = {}
def start_cmd(ses, args, input):
    """Начинает запись лога в файл вида logs/имясессии-год-месяц-день.дlog
    Если указать параметр name, то о будет использован вместо имени сессии.
    Например:
    #autologging.start вася
    начнет запись лога в logs/вася-2016-01-11.log
    category: commands
    """
    if args['name']:
        s = args['name']
    else:
        s = ses.getName()
    s += "-%s.log" % time.strftime("%Y-%m-%d")
    try:
        if not os.path.isdir('logs'):
            os.makedirs('logs')
    except Exception, e:
        exported.write_error("Ошибка создания директории для логов: %s" % e, ses)
        return
    lm = exported.get_manager("logger")
    loggerdata = lm.getLogData(ses)
    if loggerdata.isLogging() == 1:
        exported.write_error("Лог уже ведется.")
        return
    logfile = os.path.join('logs', s)
    loggerdata.openLogFile(logfile, 1, '')
    loggerdata.log("Logging started at %s\n" % time.asctime())
    exported.write_message("Начата запись лога %s" % logfile)
commands['autologging.start'] = (start_cmd, 'name=')

def stop_cmd(ses, args, input):
    """Останавливает запись в лог.
    category: commands
    """
    lm = exported.get_manager("logger")
    loggerdata = lm.getLogData(ses)
    if loggerdata.isLogging() != 1:
        exported.write_error("Лог и так не ведется.")
        return
    loggerdata.closeLogFile()
    exported.write_message("Запись лога остановлена.")
commands['autologging.stop'] = (stop_cmd, "")

def load():
    modutils.load_commands(commands)

def unload():
    modutils.unload_commands(commands)
