#!/usr/bin/env python

import os
import sys
import glob

def usage(argv):
	print
	print 'USAGE: ' + argv[0] + ' <path/to/febio> <model.feb> <path/to/post_process.py> [<path/to/modify_model.py> <modify_model.cfg>]'
	print
	print '       [.] = optional arguments (must be provided together)'
	print


def main(argv):

	# Check for appropriate usage
	if not (len(argv)==4 or len(argv)==6):
		usage(argv)
		sys.exit(1)

	febio_path = argv[1]
	input_model_filename = argv[2]

	model_filename_to_run = input_model_filename

	# Modify the model if arguments are provided to do so
	if len(argv)==6:

		modify_model_script = argv[4]
		modify_model_cfg = argv[5]

		modified_model_filename = input_model_filename[:-4] + '_MOD.feb'

		modify_model_command = modify_model_script + ' ' + input_model_filename + ' ' + modify_model_cfg + ' ' + modified_model_filename

		print
		print 'MODIFYING MODEL:'
		print modify_model_command
		print

		os.system( modify_model_command )

		# check to see if model was succesfully modified
		if len(glob.glob(modified_model_filename))==0:
			print 'ERROR: model was not successfully modified, check options in configuration file!'
			print
			sys.exit(1)
		
		# update the filename of the model to run to the modified model
		model_filename_to_run = modified_model_filename


	# Run the simulation
	febio_command = febio_path + ' -i ' + model_filename_to_run

	print 'RUNNING SIMULATION:'
	print febio_command
	print

	os.system( febio_command )

	# Post process the simulation results
	post_process_script = argv[3]

	post_process_command = post_process_script

	print 'POST-PROCESSING:'
	print post_process_command
	print

	os.system( post_process_command )

	print 'SIMULATION COMPLETE'
	print

# END OF main()


if __name__ == "__main__":
    main(sys.argv)
