#!/usr/bin/env python

import sys
import argparse

parser = argparse.ArgumentParser(
    description='Split a file into pieces in a round robin fashion. '
                'Covers the missing functionality of GNU split by enabling '
                'multi-line round robin splits.')

parser.add_argument('output_files', nargs='+', help='output files')
parser.add_argument('--input', default='-', type=str,
                    help="input file; read stdin when not specified or when '-'")
parser.add_argument('--lines', type=int, default=1,
                    help='number of lines sent to each output file at each round')
parser.add_argument('--strict', action="store_true", default=False,
                    help='require that lines split evenly ')


args = parser.parse_args()

input = sys.stdin if (args.input == '-') else open(args.input)
outputs = [open(f, 'w') for f in args.output_files]
n_files = len(outputs)
chunk_size = args.lines
cur_file_idx = -1

for i,line in enumerate(input):
    if (i % chunk_size == 0):
        cur_file_idx = (cur_file_idx + 1) % n_files
    outputs[cur_file_idx].write(line)

for f in outputs:
    f.close()

if args.strict: 
    if not (i % (args.lines * n_files)) == (args.lines * n_files - 1):
        raise ValueError("Input did not divide evenly")
        



    
    
