#!/usr/bin/env python3
from fez import FezParser
from fontFeatures.optimizer import Optimizer
from fontFeatures.ttLib import unparse
from fontTools.ttLib import TTFont
from babelfont import load
import sys
import argparse
import os
import warnings

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('--load', action='store_true',
                    help='Load features from font file')
parser.add_argument('-O', nargs='?', const=1, type=int, default=0,
                    help='Optimization level')
parser.add_argument("--master",
                    help="Master name for .glyphs fonts", metavar="MASTER")
parser.add_argument("-c",
                    help="FEZ string to execute")

parser.add_argument("--omit-gdef", action='store_false', dest='do_gdef',
                    help="Don't add a GDEF table to output")
parser.add_argument("font",
                    help="Font file (.otf/.glyphs) to process", metavar="FONT")

parser.add_argument("fee",
                    help="FEZ file to process", metavar="FEZ", nargs='?')

args = parser.parse_args()

font = load(args.font) # XXX master
p = FezParser(font)
if args.font.endswith("tf") and args.load:
    with TTFont(args.font) as ttFont:
        p.fontfeatures = unparse(ttFont)

if args.c:
    if not args.c.endswith(";"): args.c = args.c + ";"
    p.parseString(args.c)
else:
    p.parseFile(args.fee)
Optimizer(p.fontfeatures).optimize(level=args.O)
print(p.fontfeatures.asFea(do_gdef=args.do_gdef))
if p.font_modified:
	modified = "modified-%s" % os.path.basename(args.font)
	p.font.save(modified)
	warnings.warn("Modified font written on %s" % modified)

