Example #1
0
        public static FileChangeModel Parse(string fileName, FileChangeType fileChangeType = FileChangeType.Add)
        {
            var fileChangeModel = new FileChangeModel {
                FileName = fileName, FileChangeType = fileChangeType
            };

            if (!fileName.Contains("__"))
            {
                return(fileChangeModel);
            }

            var fileParts = fileName.Split("__");

            if (fileParts.Length < 3 || !fileParts[2].Contains(Convert.ToChar(".")))
            {
                return(fileChangeModel);
            }

            var priority = fileParts[2].Split(Convert.ToChar("."))[0]
                           .Replace("F", "", StringComparison.InvariantCultureIgnoreCase);

            if (int.TryParse(priority, out var priorityInt))
            {
                fileChangeModel.Priority = priorityInt;
            }

            return(fileChangeModel);
        }
Example #2
0
        private static int CopyFile(int nextVersionNumber, FileChangeModel fileChangeModel,
                                    IEvfConsoleArgs evfConsoleArgs)
        {
            var sourceFile   = Path.Combine(evfConsoleArgs.SourceFilesPath, fileChangeModel.FileName);
            var destFileName = $"V{nextVersionNumber:0000}__{fileChangeModel.FileName}";
            var destFilePath = Path.Combine(evfConsoleArgs.EvolveFolderPath, destFileName);

            if (File.Exists(sourceFile))
            {
                Program.Logger.Verbose("Will copy {0} to {1}", sourceFile, destFilePath);
                File.Copy(sourceFile, destFilePath, false);
            }
            else
            {
                Program.Logger.Error("Unable to copy as the source file does not exist > {0} to {1}", sourceFile,
                                     destFilePath);
                return(nextVersionNumber);
            }

            return(nextVersionNumber + 1);
        }
Example #3
0
        private static FileChangesModel CheckForFileUpdates(IReadOnlyDictionary <string, string> existingHashes,
                                                            IReadOnlyDictionary <string, string> sourceHashes)
        {
            var fileChangesModel = new FileChangesModel();

            foreach (var(key, value) in sourceHashes)
            {
                if (!existingHashes.ContainsKey(key))
                {
                    fileChangesModel.FileChanges.Add(FileChangeModel.Parse(key));
                    continue;
                }

                var currentHash = existingHashes[key];

                if (!value.ToUpperInvariant().Equals(currentHash.ToUpperInvariant()))
                {
                    fileChangesModel.FileChanges.Add(FileChangeModel.Parse(key, FileChangeType.Update));
                }
            }

            return(fileChangesModel);
        }