public GenieConfig(GenieLamp lamp, XmlNode node) { this.lamp = lamp; macro = new MacroExpander(lamp.Macro); name = Utils.Xml.GetAttrValue(node, "name"); assemblyName = Utils.Xml.GetAttrValue(node, "assembly"); typeName = Utils.Xml.GetAttrValue(node, "type"); active = Utils.Xml.GetAttrValue(node, "active", true); targetVersion = Environment.ExpandEnvironmentVariables(Utils.Xml.GetAttrValue(node, "targetVersion", TargetVersionWildcard)); macro.SetMacro("%TARGET_VERSION%", targetVersion); outDir = macro.Subst(Lamp.ExpandFileName(Utils.Xml.GetAttrValue(node, "outDir"))); outFileName = macro.Subst(Lamp.Macro.Subst(Utils.Xml.GetAttrValue(node, "outFileName"))); this.OutFileEncoding = Encoding.GetEncoding(Utils.Xml.GetAttrValue(node, "outFileEncoding", Encoding.UTF8.BodyName)); this.UpdateDatabase = Utils.Xml.GetAttrValue(node, "updateDatabase", false); configParams = new GenieConfigParams(this, lamp.QueryNode(node, "./{0}:Param")); this.AssistantConfigs = new GenieAssistantConfigs(this, node); this.Assistants = new List <IGenieAssistant>(); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } }
public void Init() { projectFileName = Path.GetFullPath(System.Environment.ExpandEnvironmentVariables(spellConfig.FileName)); projectDirectory = Path.GetDirectoryName(projectFileName); macro.SetMacro("%PROJECT_DIR%", projectDirectory); macro.SetMacro("%PROJECT_FILENAME%", projectFileName); codeWritersFactory = new CodeWritersFactory(this); GenieLampLoader loader = new GenieLampLoader(this); XmlDocument projectDoc = loader.LoadFile(ProjectFileName, GLProjectNamespaceName, "GenieLamp.Core.XMLSchema.GenieLamp.xsd"); xmlNamespace = loader.XmlNamespace; projectName = Utils.Xml.GetAttrValue(projectDoc.DocumentElement, "project"); macro.SetMacro("%PROJECT_NAME%", projectName); projectVersion = Utils.Xml.GetAttrValue(projectDoc.DocumentElement, "version"); macro.SetMacro("%PROJECT_VERSION%", projectVersion); XmlNamespaceManager nsmgr = new XmlNamespaceManager(projectDoc.NameTable); nsmgr.AddNamespace(GLProjectNamespaceName, xmlNamespace); config = new GenieLampConfig(this, projectDoc.SelectSingleNode(String.Format("//{0}:Configuration", GLProjectNamespaceName), nsmgr)); genies = new Genies(this, projectDoc.SelectNodes(String.Format("//{0}:Genie", GLProjectNamespaceName), nsmgr)); model = new Model(this); XmlNodeList modelFileNodes = projectDoc.SelectNodes(String.Format("//{0}:ImportModel", GLProjectNamespaceName), nsmgr); foreach (XmlNode importModelNode in modelFileNodes) { model.AddModelDoc(ExpandFileName(Utils.Xml.GetAttrValue(importModelNode, "fileName"), ProjectDirectory)); } model.Update(); model.Check(); config.Update(); model.ImplementPatterns(); }
public void TestCase() { string envVarName = "GL_TEST"; string envVar = "%" + envVarName + "%"; string envVarValue = "/RootTest"; string source = String.Format("Output to: {0}/%PROJECT_DIR%/%PROJECT_NAME%.sql", envVar); string projectName = "TestProject"; string projectDir = "TestDir/Subdir"; string target = String.Format("Output to: {0}/{1}/{2}.sql", envVarValue, projectDir, projectName); Environment.SetEnvironmentVariable(envVarName, envVarValue); Assert.AreEqual("%%", System.Environment.ExpandEnvironmentVariables("%%")); Assert.AreEqual(envVarValue, System.Environment.ExpandEnvironmentVariables(envVar)); Assert.AreEqual("%" + envVar + "%", Utils.Sys.ExpandEnvironmentVariables("%" + envVar + "%")); Assert.AreEqual("%TEST123%", Utils.Sys.ExpandEnvironmentVariables("%TEST123%")); Assert.AreEqual("%TEST123%_%TEST456%", Utils.Sys.ExpandEnvironmentVariables("%TEST123%_%TEST456%")); Assert.AreEqual(envVarValue, Utils.Sys.ExpandEnvironmentVariables(envVar)); Assert.AreEqual(String.Format("{0}_{0}", envVarValue), String.Format("{0}_{0}", Utils.Sys.ExpandEnvironmentVariables(envVar))); MacroExpander m = new MacroExpander(); m.SetMacro("%PROJECT_NAME%", projectName); m.SetMacro("%PROJECT_DIR%", projectDir); Assert.AreEqual(2, m.Count); Assert.AreEqual(target, m.Subst(source)); m.Clear(); Assert.AreEqual(0, m.Count); string unchanged = "IX%COUNTER%_%TABLE%_%COLUMNS%"; Assert.AreEqual(unchanged, m.Subst(unchanged)); }