#!/usr/bin/env python3
from fontFeatures.feeLib import FeeParser
from fontFeatures.optimizer import Optimizer
from fontFeatures.ttLib import unparse
from fontTools.ttLib import TTFont
from babelfont import Babelfont
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="FEE 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="FEE file to process", metavar="FEE", nargs='?')

args = parser.parse_args()

font = Babelfont.open(args.font,master=args.master)
if args.font.endswith("tf") and args.load:
	font = TTFont(args.font)
	p.fontfeatures = unparse(font)

p = FeeParser(font)
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)

