code: def main():
      
      desc = 'Generate files to benchmark'
      parser = argparse.ArgumentParser(description=desc)
      parser.add_argument(
          '--src',
          dest='src_dir',
          default='src',
          help='The directory containing the templates'
      )
      parser.add_argument(
          '--out',
          dest='out_dir',
          default='generated',
          help='The output directory'
      )
      parser.add_argument(
          '--seed',
          dest='seed',
          default='13',
          help='The random seed (to ensure consistent regeneration)'
      )
  
      args = parser.parse_args()
  
      random.seed(int(args.seed))
  
      mkdir_p(args.out_dir)
  
      for template in templates_in(args.src_dir):
          modes = template.modes()
  
          n_range = template.range()
          for n_value in n_range:
              base = template.instantiate(n_value)
              for mode in modes:
                  write_file(
                      os.path.join(
                          args.out_dir,
                          out_filename(template, n_value, mode)
                      ),
                      mode.convert_from(base)
                  )
          write_file(
              os.path.join(args.out_dir, '{0}.json'.format(template.name)),
              json.dumps({
                  'files': {
                      n: {
                          m.identifier: out_filename(template, n, m)
                          for m in modes
                      } for n in n_range
                  },
                  'name': template.name,
                  'x_axis_label': template.property('x_axis_label'),
                  'desc': template.property('desc'),
                  'modes': {m.identifier: m.description() for m in modes}
              })
          )
docs: The main function of the script