public static List <KeyValuePair <int, FileInfo> > FindAll()
        {
            Console.WriteLine("Loading sql scripts...");

            var files = FindAllFiles();

            var result = new Dictionary <int, FileInfo>();

            var pattern = MyConfigManager.GetSqlScriptFileFormat();

            foreach (var file in files)
            {
                var match = Regex.Match(file.Name, pattern);

                if (match.Success)
                {
                    var version = Convert.ToInt16(match.Groups[1].Value);

                    if (result.ContainsKey(version))
                    {
                        throw new ApplicationException($"Duplicated key: '{version}'");
                    }

                    result.Add(version, file);
                }
                else
                {
                    throw new ApplicationException($"Incorrect file format: '{file.Name}'");
                }
            }

            return(result.OrderBy(r => r.Key).ToList());
        }
        private static List <FileInfo> FindAllFiles()
        {
            var rootFolder = MyConfigManager.GetRootFolder();

            if (!Directory.Exists(rootFolder))
            {
                throw new ApplicationException($"Folder does not exist: {rootFolder}");
            }

            var files = Directory.GetFiles(rootFolder).Select(f => new FileInfo(f)).ToList();

            if (files.Count == 0)
            {
                throw new ApplicationException("No scripts were found.");
            }
            return(files);
        }