#!/usr/bin/env python
# -*- coding: utf-8 -*-
import errno
import sys
import fileinput
import argparse
import hcut

def guess_encoding(s):
    encodings = ['ascii', 'euc-jp', 'utf-8', 'cp932', 'shift-jis']
    for enc in encodings:
        try:
            unicode(s, enc)
            break
        except UnicodeDecodeError, e:
            enc = ''
    return enc

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='hcut')
    parser.add_argument('file', nargs='*')
    parser.add_argument('-f', '--field', action='append', required=True)
    parser.add_argument('-d', '--delimiter', default=hcut.DEFAULT_SEPARATOR)
    parser.add_argument('-e', '--encoding', default='utf-8')
    parser.add_argument('--header', action='store_true')
    parser.add_argument('--version', action='version', version='%(prog)s ' + hcut.__version__)

    args = parser.parse_args()
    print_header = args.header
    input_files = args.file
    encoding = args.encoding
    delimiter = args.delimiter
    fields = [unicode(f, guess_encoding(f)) for f in args.field]

    try:
        if len(input_files) == 0:
            hcut.cut_stdin(fields, print_header, delimiter, encoding)
        else:
            hcut.cut_files(fields, input_files, print_header, delimiter, encoding)
    except KeyboardInterrupt, e:
        pass
    except IOError, e:
        if e.errno == errno.EPIPE:
            pass
