Beispiel #1
0
        /// <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);
        }
Beispiel #7
0
 public Configs(string _projectPath, TemplateEnvironment _currentEnvironment)
 {
     this.projectPath        = _projectPath;
     this.currentEnvironment = _currentEnvironment;
     this.TplFiles           = TplFile.GetTplFiles(this.projectPath);
 }