Beispiel #1
0
        /// <summary>
        /// Check version definition for the directory
        /// </summary>
        /// <param name="defItem">The directory definition</param>
        /// <returns>True if successful, false otherwise.</returns>
        public static BoolMessageItem <VersionDefItem> CheckFile(VersionDefItem defItem)
        {
            VersionDefFile def = defItem as VersionDefFile;

            if (def.Path.Contains("sojara-config-cj-base-clean-arc8-eod-prod.xml"))
            {
                Console.WriteLine("testing");
            }
            bool   success  = true;
            string filePath = VersionHelper.Translate(def.Path);
            bool   exists   = File.Exists(filePath);
            string message  = string.Empty;

            // Exists.
            if (!exists && def.Requirement == VersionRequirement.Required)
            {
                message = string.Format("File '{0}' does not exist.", filePath);
                return(new BoolMessageItem <VersionDefItem>(defItem, false, message));
            }

            // Same version?
            if (!string.IsNullOrEmpty(def.VersionReq))
            {
                string fileVersion = FileUtils.GetVersion(filePath);
                if (string.Compare(def.VersionReq, fileVersion, true) != 0)
                {
                    success  = false;
                    message += Environment.NewLine + string.Format("File version '{0}' does not match expected version '{1}'.", fileVersion, def.VersionReq);
                }
            }
            // Same date ?
            if (!string.IsNullOrEmpty(def.DateReq))
            {
                DateTime fileDateTime     = File.GetLastWriteTime(filePath);
                DateTime expectedDateTime = DateTime.Parse(def.DateReq);
                if (fileDateTime.Date.CompareTo(expectedDateTime.Date) != 0)
                {
                    string fileDate = fileDateTime.ToString();
                    success  = false;
                    message += Environment.NewLine + string.Format("File Date '{0}' does not match expected date '{1}'.", fileDate, def.DateReq);
                }
            }

            // Same size ?
            if (!string.IsNullOrEmpty(def.SizeReq))
            {
                FileInfo fileInfo         = new FileInfo(filePath);
                long     expectedFileSize = Convert.ToInt64(def.SizeReq);
                if (fileInfo.Length != expectedFileSize)
                {
                    success  = false;
                    message += Environment.NewLine + string.Format("File Size '{0}' does not match expected size '{1}'.", fileInfo.Length, expectedFileSize);
                }
            }

            return(new BoolMessageItem <VersionDefItem>(defItem, success, message));
        }
 /// <summary>
 /// Execute the check.
 /// </summary>
 public override BoolMessageItem Execute()
 {
     try
     {
         bool     useFileSize = Convert.ToBoolean(_parsedArgs.NamedArgs["useSize"]);
         string[] files       = Directory.GetFiles(_parsedArgs.NamedArgs["directory"]);
         List <VersionDefItem> definitionComponents = new List <VersionDefItem>();
         foreach (string filename in files)
         {
             FileInfo file = new FileInfo(filename);
             if (IsPartOfDefinition(file))
             {
                 VersionDefFile fileDef = new VersionDefFile();
                 fileDef.Path       = file.FullName;
                 fileDef.IsRequired = true;
                 fileDef.IsWritable = false;
                 fileDef.Match      = VersionMatch.Equal;
                 fileDef.VersionReq = FileUtils.GetVersion(filename);
                 if (useFileSize)
                 {
                     fileDef.SizeReq = file.Length.ToString();
                 }
                 fileDef.Requirement = VersionRequirement.Required;
                 fileDef.FailOnError = false;
                 fileDef.DateReq     = file.LastWriteTime.ToShortDateString();
                 definitionComponents.Add(fileDef);
             }
         }
         var def = new VersionDefinition();
         def.Name       = _parsedArgs.NamedArgs["name"];
         def.Components = definitionComponents;
         VersionImport.Save <VersionDefinition>(_parsedArgs.NamedArgs["definition"], def);
     }
     catch (Exception ex)
     {
         _checkResult = new BoolMessageItem(null, false, ex.Message + Environment.NewLine + ex.StackTrace);
     }
     return(_checkResult);
 }