#!/usr/bin/python
# ECOin - Copyright (c) - 2014/2021 - GPLv3 - epsylon@riseup.net (https://03c8.net)

from subprocess import Popen, PIPE
import glob

OUT_CPP="src/qt/ecoinstrings.cpp"
EMPTY=['""']

def parse_po(text):
    messages = []
    msgid = []
    msgstr = []
    in_msgid = False
    in_msgstr = False
    for line in text.split('\n'):
        line = line.rstrip('\r')
        if line.startswith('msgid '):
            if in_msgstr:
                messages.append((msgid, msgstr))
                in_msgstr = False
            in_msgid = True
            msgid = [line[6:]]
        elif line.startswith('msgstr '):
            in_msgid = False
            in_msgstr = True
            msgstr = [line[7:]]
        elif line.startswith('"'):
            if in_msgid:
                msgid.append(line)
            if in_msgstr:
                msgstr.append(line)
    if in_msgstr:
        messages.append((msgid, msgstr))
    return messages

files = glob.glob('src/*.cpp') + glob.glob('src/*.h') 

child = Popen(['xgettext','--output=-','-n','--keyword=_'] + files, stdout=PIPE)
(out, err) = child.communicate()

messages = parse_po(out) 

f = open(OUT_CPP, 'w')
f.write("""#include <QtGlobal>
// Automatically generated by extract_strings.py
#ifdef __GNUC__
#define UNUSED __attribute__((unused))
#else
#define UNUSED
#endif
""")
f.write('static const char UNUSED *ecoin_strings[] = {')
for (msgid, msgstr) in messages:
    if msgid != EMPTY:
        f.write('QT_TRANSLATE_NOOP("ecoin-core", %s),\n' % ('\n'.join(msgid)))
f.write('};')
f.close()
