/// <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); }