#!/usr/bin/python

# This is code is released under the GNU GPL v3 license.

__author__ = 'Aaron S. Joyner <aaron@joyner.ws>'

import optparse
import os
import random
import string
import sys
import time

def GetRandString(size):
  """Get a random string of 'size' characters."""
  chars = string.letters + string.digits
  return ''.join([random.choice(chars) for i in xrange(size)])


def ParseOptions():
  """Parse the command line options.  Return optparse output."""
  usage = 'usage: %prog [options]'
  parser = optparse.OptionParser(usage)
  parser.add_option('-n', '--numfiles', type='int',
                    help='Number of files to create')
  parser.add_option('-s', '--filesize', type='int', default=1024,
                    help='Size of files to create, in bytes')
  parser.add_option('-o', '--outputdir', default='.',
                    help='Directory to write files to')
  parser.add_option('-q', '--quiet', action='store_true',
                    help='Supress creation message')
  return parser.parse_args()


def GenerateFiles(numfiles, filesize=1024, outputdir='.'):
  """Generate the requested number of files with equal random data."""
  random_string = GetRandString(filesize)

  for i in xrange(0, numfiles):
    current_file = open('%d' % (i + 1), 'w')
    current_file.write(random_string)
    current_file.close()


def main():
  (options, args) = ParseOptions()

  start_time = time.time()
  GenerateFiles(options.numfiles, options.filesize, options.outputdir)
  if not options.quiet:
    print ('Created %s files of %s bytes in %s seconds.' %
           (options.numfiles, options.filesize, time.time() - start_time))


if __name__ == '__main__':
  main()
