#!/usr/bin/env python3
import getopt
import importlib.machinery
import os
import steak
import sys
import types


if '.' not in sys.path:
	sys.path.append('.')
if 'grill' not in sys.path:
	sys.path.append('grill')

def _import(filename, modulename='__grill__'):
	if not os.path.exists(filename):
		raise ImportError(filename + ' as ' + modulename)

	if modulename not in sys.modules:
		loader = importlib.machinery.SourceFileLoader(modulename, filename)
		loader.load_module(modulename)

	return sys.modules[modulename]

def _inspect(grill, module):
	attrs = (x for x in dir(module) if not x.startswith('__'))
	for attr in attrs:
		val = getattr(module, attr)
		if isinstance(val, types.FunctionType):
			setattr(module, attr, grill.steak(getattr(module, attr)))

if __name__ == '__main__':
	args = sys.argv[1:]

	files = []

	if os.path.exists('steakfile'):
		files.append(('steakfile', '__grill__'))
	elif os.path.exists('grill.py'):
		files.append(('grill.py', '__grill__'))
	elif os.path.exists('grill'):
		for filename in os.listdir('grill'):
			basename, ext = os.path.splitext(filename)
			if ext == '.py':
				files.append((os.path.join('grill', filename), basename))

	grill = steak.Grill()

	for filename, modulename in files:
		mod = _import(filename, modulename)
		_inspect(grill, mod)

	if not len(args) or args[0] in ('-h', '--help'):
		grill.help()
	elif args[0] in ('-v', '--version'):
		print('steak', steak.__version__)
	else:
		grill.main(args)
