#!/usr/bin/python
# -*- encoding: utf-8 -*-

description = """
Ищет по Трекеру "релизные глитчи" (макрос "Торможение в релизе", тег release_glitch, метка RELEASE_GLITCH в тексте комментария).

Вся история глитчей:
dt-release-glitch-history

История в релизах за определнный период:
dt-release-glitch-history -f 2020-09-01 -t 2020-09-30
"""

import sys
import os

sys.path.insert(0, '/opt/direct-py/startrek-python-client-sni-fix')
from startrek_client import Startrek

import re
import argparse
import subprocess

STARTREK_TOKEN_FILE = '~/.startrek_client_token'
SCRIPT_NAME = os.path.basename(__file__)


def parse_options():
    parser = argparse.ArgumentParser(add_help=False)
    parser.add_argument("-h", "--help", dest="help", help="Справка", action="store_true")
    parser.add_argument('-f', '--date-from', dest='date_from', type=str, help="начальная дата для поиска релизов")
    parser.add_argument('-t', '--date-to', dest='date_to', type=str, help="конечная дата для поиска релизов")
    opts, extra = parser.parse_known_args()

    if opts.help:
        print description
        print parser.format_help()
        exit(0)

    opts.extra = extra

    if len(extra) > 0:
        exit("unexpected params %s" % extra)

    return opts


def run():
    opts = parse_options()

    startrek_token = open(os.path.expanduser(STARTREK_TOKEN_FILE)).readline().strip()
    startrek_client = Startrek(token=startrek_token, useragent=SCRIPT_NAME)

    dates_cond = ""
    if opts.date_from:
        dates_cond += ' Created: >= "%s"' % opts.date_from
    if opts.date_to:
        dates_cond += ' Created: <= "%s"' % opts.date_to

    query = 'Queue: DIRECT Type: Release Tags: release_glitch %s "Sort by": key desc' % dates_cond

    print query

    releases = startrek_client.issues.find(query)

    for r in releases:
        for c in r.comments:
            if re.search('RELEASE_GLITCH', c.text):
                print "\n\n### %s / %s / %s\n%s" % (r.key, c.createdAt, c.createdBy.id, c.text)

    return


if __name__ == '__main__':
    run()

