#!/usr/bin/env python

import csv
import getopt
import sys

BASENAME = None
FIELDNAMES = None

def open_csvw(basename, key, fieldnames):
    filename = "-".join(key) + ".csv"
    if basename is not None:
        filename = basename + "-" + filename
    f = open(filename, "w")
    return csv.DictWriter(f, fieldnames)

opts, args = getopt.gnu_getopt(sys.argv[1:], "b:f:")
for o, a in opts:
    if o == "-b":
        BASENAME = a
    if o == "-f":
        FIELDNAMES = a.split(",")
assert len(args) == 0

CSVW = {}

csvr = csv.DictReader(sys.stdin)
for row in csvr:
    key = tuple(row[x] for x in FIELDNAMES)
    if key not in CSVW:
        csvw = open_csvw(BASENAME, key, csvr.fieldnames)
        csvw.writeheader()
        CSVW[key] = csvw
    else:
        csvw = CSVW[key]
    csvw.writerow(row)
