#!/usr/bin/env python3
import argparse
import csv
import sys
from jinja2 import Environment, FunctionLoader

parser = argparse.ArgumentParser(description='Generate yaml for homeassistant using jinja2 templates -- MIT Licensed')

parser.add_argument('jinja2template', nargs='?', metavar='jinja2template', type=argparse.FileType('r'),
                    help='the jinja2 template for hass (e.g. template.jinja)')

parser.add_argument('devicelist', nargs='?', metavar='devicelist', type=argparse.FileType(mode='r'),
                    help='the list of devices as a csv (e.g. input.csv)', default=sys.stdin)

parser.add_argument('outfile', nargs='?', metavar='outfile', type=argparse.FileType('w'),
                    help='the output filename (e.g. output.yaml)', default=sys.stdout)

args = parser.parse_args()

if not args.jinja2template:
  raise AssertionError("you must provide a template for this to work")

csv_entries = [{k.replace(u'\ufeff', ''): row[k] for k in row.keys()} for row in
               csv.DictReader(args.devicelist, skipinitialspace=True)]

print(csv_entries)


def load_template(name=None):
  return args.jinja2template.read()


env = Environment(
  loader=FunctionLoader(load_template)
)

template = env.get_template('none')

args.outfile.write(template.render(entries=csv_entries))
