#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'''
This script initializes a folder by creating the configuration folder and file.
'''

import argparse
import os

import hateno.folder.folder as folder
from hateno.utils import jsonfiles

def addArguments(parser):
	pass

def main(args):
	conf_folder = folder.MAIN_FOLDER
	config_file = os.path.join(conf_folder, folder.CONF_FILENAME)

	try:
		os.makedirs(conf_folder)

	except FileExistsError:
		pass

	if os.path.isfile(config_file):
		print('This folder already has a configuration file.')
		exit()

	jsonfiles.write({
		'name': 'program-name',
		'description': 'A description of the program.',
		'exec': './program',
		'setting_pattern': '-{name} {value}',
		'output': {
			'files': [
				{
					'name': 'output.txt',
					'checks': ['exists', 'notEmpty']
				}
			],
			'checks': ['noMore']
		},
		'globalsettings': [
			{
				'name': 'folder',
				'default': 'simulation'
			}
		],
		'settings': [
			{
				'set': 'example_set',
				'required': True,
				'settings': [
					{
						'name': 'example-setting',
						'default': 0
					},
					{
						'name': 'example-flag',
						'default': False,
						'pattern': '-{name}',
						'only_if': True
					}
				]
			}
		],
		'fixers': ['intFloats']
	}, config_file, sort_keys = False)

if __name__ == '__main__':
	parser = argparse.ArgumentParser(description = 'Initialize a simulations folder.')
	addArguments(parser)
	main(parser.parse_args())
