#!/usr/bin/env python

# PrepLang v1.0
# Copyright (c) 2005 Mircea Bardac
# E-mail: dev AT mircea.bardac.net

# Script to prepare the (un)install file lists & setup for the language files
# Start from: installer/tools/
# Usage: ./preplang
# The script will also put the new language setup files in the installer dir

import os
import string
import array
import sys
import shutil

# create build paths if they do not exist
if not os.path.exists("../build"):
	os.mkdir("../build");
if not os.path.exists("../build/psi_lang"):
	os.mkdir("../build/psi_lang");

fmap=open("psi_lang.map")

flanginst=open("../build/psi_lang_install.nsh","w")
flangsetup=open("../build/psi_lang_setup.nsh","w")
flanguninst=open("../build/psi_lang_uninstall.nsh","w")

langmap={}
for s in fmap.readlines():
	s=s.replace("\n","")
	langsettings=s.split('\t')
	if langsettings[0]!='':
		if s[0]=='#': continue
		langmap[langsettings[0]]=langsettings[1:]

langlist={}
for file in os.listdir(sys.argv[1]):
	if os.path.isdir(sys.argv[1]+"/"+file): continue
	shutil.copyfile(sys.argv[1]+"/"+file, "../build/psi_lang/"+file);
	if (not langmap.has_key(file)):
		print "!Language definition not found for file: "+file+" (skipped)"
		continue
	else:
		print "Language definition found for: "+file+" = "+langmap[file][2]
		langlist[langmap[file][2]]=[file, langmap[file][0], langmap[file][1]]

for lang in sorted(langlist.keys()):
	filename=langlist[lang][0]
	sectionid=langlist[lang][1]
	langid=langlist[lang][2]
	flanginst.write("; "+lang+"\n")
	flanginst.write("Section /o \""+lang+"\" "+sectionid+"\n")
	flanginst.write("\tSetOverwrite on\n")
	flanginst.write("\tSetOutPath \"$INSTDIR\\\"\n")
	flanginst.write("\tFile \"${APP_BUILD}psi_lang${FILE_SEPARATOR}"+filename+"\"\n")
	flanginst.write("SectionEnd\n\n")
	flanguninst.write("\tDelete \"$INSTDIR\\"+filename+"\"\n")
	if langid!="":
		flangsetup.write("\tStrCmp $LANGUAGE ${"+langid+"} 0 +2\n")
		flangsetup.write("\t\tSectionSetFlags ${"+sectionid+"} ${SF_SELECTED}\n")
	else:
		flangsetup.write("\t; No "+lang+" AutoSelection\n")

flanginst.close()
flangsetup.close()
flanguninst.close()
