#!/usr/bin/env python
import os
import sys

import argparse

sys.path.append(os.path.abspath('..'))


from lib import parse

if __name__ == '__main__':

    parser = argparse.ArgumentParser(
            description='crass: a CSS3 utility')
    parser.add_argument(
            'input', metavar='path', nargs='?',
            help='The path to the file to minify')
    parser.add_argument(
            '--pretty', action='store_const', const=True, default=False,
            help='Pretty print the parsed CSS')
    parser.add_argument(
            '--optimize', action='store_const', const=True, default=False,
            help='Optimize parsed CSS')
    parser.add_argument(
            '--O1', action='store_const', const=True, default=False,
            help='Enables mostly safe optimizations')
    parser.add_argument(
            '--O2', action='store_const', const=True, default=False,
            help='Enables unsafe optimizations')
    parser.add_argument(
            '--no-reorder', action='store_const', const=False, default=True,
            help='Prevents descriptors and selectors from being sorted')
    args = parser.parse_args()

    if args.input:
        with open(args.input) as inp:
            stylesheet = parse(inp.read())
    else:
        stylesheet = parse(sys.stdin.read())

    if args.optimize or args.O1 or args.O2:
        stylesheet = stylesheet.optimize(
            sort=args.no_reorder, O1=args.O1 or args.O2, O2=args.O2)
    if args.pretty:
        sys.stdout.write(stylesheet.pretty())
    else:
        sys.stdout.write(unicode(stylesheet).encode('utf-8'))

