from shutil import copyfile
import os, sys
from ij import IJ
from sys import path


# import Cluster_Analysis_BETA


def find(name, p):
	result = []
	for root, dirs, files in os.walk(p):
		# print root, files
		if name in files:
			result.append(os.path.join(root, name))
	return result


def insert_and_test_ini(inipath):
	old_path = os.path.join(inipath, "ini.cfg")
	IJ.run("Console")
	pathINI = inifile.getAbsolutePath()
	print "_" * len(pathINI)
	print "Loading ini.cfg for Module", cab.__name__
	if os.path.splitext(pathINI)[1] == ".cfg":
		
		c = config(testmode=True)
		c.setDefault(True)
		old = c.section_dict_default

		# copyfile(pathINI, old_path)
		print pathINI
		print "Test new ini.cfg..."
		c.readIni(test=True, testPath=pathINI)
		new = c.section_dict_old
		test = True
		for k in old:
			if not k in new:
				test = False
				print k
			else:
				for k2 in old[k]:
					if not k2.lower() in new[k]:
						print "Error %s not found in Section %s"%(k2, k)
						test = False

		if test:
			expName = os.path.split(pathINI)[1]
			expName = os.path.splitext(expName)[0]
			pathINI2 = old_path.replace("ini", expName)
			#os.rename(pathINI, pathINI2)
			print pathINI2
			os.remove(old_path)
			copyfile(pathINI, old_path)
			#os.rename(pathINI2, old_path)
			print "Loading successful, viable ini.cfg-file"
		else:
			print "Error! ini.cfg-file corrupted, try with another one"

	else:
		sys.exit("Not an ini.cfg-file. Please, retry with an ini.cfg-file")


#@File(label = "Path to new ini.cfg-file", required = True, Description = "ini.cfg", style="extension:cfg") inifile

if __name__ in ["__builtin__", "__main__"]:

	dir_path = os.path.dirname(os.path.realpath('__file__'))
	# paths = [os.path.join(dir_path, "plugins", "Cluster_Analysis"), os.path.join(dir_path, "plugins", "Cluster_Analysis", "ImageJ2")]
	# cabs = [Cluster_Analysis_BETA, Cluster_Analysis_BETA_v2]
	paths = find("Cluster_Analysis_BETA_v3.py", dir_path)

	paths = [os.path.dirname(x) for x in paths if os.path.join("plugins", "Cluster_Analysis", "Cluster_Analysis_BETA_v3.py") in x]
	print paths
	#paths = [dir_path, os.path.join(dir_path, "plugins", "Cluster_Analysis")]
	# cabs = [Cluster_Analysis_BETA_v2]
	for i, p in enumerate(paths):
		if p not in path:
			path.append(p)
			print p
		print path
		import Cluster_Analysis_BETA_v3 as cab
		from ClusterAnalysisModuls.config import config
		insert_and_test_ini(p)
