/// <summary> /// 根据模板创建一个真实的文件出来 /// </summary> public void CloneFile(TemplateEnvironment _currentEnvironment) { foreach (var replaceSignItem in this.replaceSign) { this.fileContent = this.fileContent.Replace(replaceSignItem.Key, _currentEnvironment.NodePairs[replaceSignItem.Value]); } string fileExtension = string.Format(".{0}", Configs.Key_TemplateFileExtension); string newFileName = this.fileName.Replace(fileExtension, ""); string newFilePath = Path.Combine(this.fileDirectory, newFileName); File.WriteAllText(newFilePath, this.fileContent); }
private void ResolveDifference(TemplateEnvironment target, TemplateEnvironment source, List <string> differenceContents) { foreach (var targetNodePair in target.NodePairs) { if (!source.NodePairs.ContainsKey(targetNodePair.Key)) { string keyDifference = string.Format("{0}-{1}:{2}", source.EnvironmentName, target.EnvironmentName, targetNodePair.Key); if (differenceContents.Where(difference => difference.Equals(keyDifference)).Count() == 0) { differenceContents.Add(keyDifference); } } } }
/// <summary> /// 打印不同之处 /// </summary> /// <param name="source">比较源</param> /// <param name="target">比较目标</param> private List <string> PrintDifference(TemplateEnvironment source, TemplateEnvironment target) { List <string> differenceContents = new List <string>(); foreach (var sourceNodePair in source.NodePairs) { if (!target.NodePairs.ContainsKey(sourceNodePair.Key)) { string keyDifference = string.Format("{0}-{1}:{2}", source.EnvironmentName, target.EnvironmentName, sourceNodePair.Key); differenceContents.Add(keyDifference); } } this.ResolveDifference(target, source, differenceContents); return(differenceContents); }
public Template(string _projectPath, string _currentEnvironment) { this.projectPath = _projectPath; this.currentEnvironment = _currentEnvironment; this.environmentsFile = Path.Combine(this.projectPath, Template.Key_ResourceValueXMLName); Dictionary <string, string> defaultConfig = new Dictionary <string, string>() { { "Key_RootNode", Template.Key_RootNode }, { "Key_Environments", Template.Key_Environments }, { "Key_Environment", Template.Key_Environment }, { "Key_ConfigResourceValues", Template.Key_ConfigResourceValues }, { "Key_CurrentEnvironment", this.currentEnvironment } }; this.Environments = TemplateEnvironment.GetEnvironments(this.environmentsFile, defaultConfig); }
public ComplierMessage IsSame() { ComplierMessage result = new ComplierMessage(true); TemplateEnvironment currentEnvironmentTemplate = this.Environments.Where(template => template.EnvironmentName.Equals(this.currentEnvironment)).First(); foreach (var environmentTemplate in Environments) { if (currentEnvironmentTemplate.Equals(environmentTemplate)) { continue; } else { result.Success = false; result.ComplierMsg.AddRange(this.PrintDifference(currentEnvironmentTemplate, environmentTemplate)); } } return(result); }
internal static List <TemplateEnvironment> GetTemplateInfoFromFile() { List <TemplateEnvironment> templateEnvironments = new List <TemplateEnvironment>(); string environmentNodeSelect = string.Format("/{0}/{1}/{2}", Template.Key_RootNode, Template.Key_Environments, Template.Key_Environment); string resourceNodeSelect = string.Format("/{0}/{1}/{2}", Template.Key_RootNode, Template.Key_ConfigResourceValues, "{0}"); XmlNodeList environmentNodes = templateXmlDocument.SelectNodes(environmentNodeSelect); foreach (XmlNode environmentNodeItem in environmentNodes) { TemplateEnvironment templateEnvironment = new TemplateEnvironment(environmentNodeItem.Attributes["Name"].Value.Trim()); string resourceEnvironmentSelect = string.Format(resourceNodeSelect, templateEnvironment.environmentName); XmlNode resourceEnvironmentNode = templateXmlDocument.SelectSingleNode(resourceEnvironmentSelect); XmlNodeList resourceNodes = resourceEnvironmentNode.ChildNodes; foreach (XmlNode resourceNode in resourceNodes) { templateEnvironment.keyNodesStack.Append(resourceNode.Name); templateEnvironment.nodePairs.Add(resourceNode.Name, resourceNode.InnerText.Trim()); } templateEnvironments.Add(templateEnvironment); } return(templateEnvironments); }
public Configs(string _projectPath, TemplateEnvironment _currentEnvironment) { this.projectPath = _projectPath; this.currentEnvironment = _currentEnvironment; this.TplFiles = TplFile.GetTplFiles(this.projectPath); }