ExtractScriptNumberFromFilename() public method

public ExtractScriptNumberFromFilename ( string filename ) : int
filename string
return int
 public void CanParseAnyFilenameThatStartsWithANumber()
 {
     FilenameParser parser = new FilenameParser();
     Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("0001_a_filename.txt"));
     Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1_a_filename.txt"));
     Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1 a filename.txt"));
     Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1.txt"));
     Assert.AreEqual(123, parser.ExtractScriptNumberFromFilename("00123_something.txt"));
     Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1.foo.2.txt"));
 }
Beispiel #2
0
        public void CanParseAnyFilenameThatStartsWithANumber()
        {
            FilenameParser parser = new FilenameParser();

            Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("0001_a_filename.txt"));
            Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1_a_filename.txt"));
            Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1 a filename.txt"));
            Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1.txt"));
            Assert.AreEqual(123, parser.ExtractScriptNumberFromFilename("00123_something.txt"));
            Assert.AreEqual(1, parser.ExtractScriptNumberFromFilename("1.foo.2.txt"));
        }
Beispiel #3
0
        public List <ChangeScript> GetChangeScripts()
        {
            if (directory == null)
            {
                return(new List <ChangeScript>());
            }
            if (!directory.Exists)
            {
                return(new List <ChangeScript>());
            }

            try
            {
                infoTextWriter.WriteLine("Reading change scripts from directory '" + directory.FullName + "'...");
            }
            catch (IOException)
            {
                // ignore
            }

            var scripts = new List <ChangeScript>();

            foreach (FileInfo file in directory.GetFiles("*.sql", SearchOption.AllDirectories))
            {
                if ((file.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
                {
                    continue;
                }

                string filename = file.Name;

                try
                {
                    var scriptNumber = filenameParser.ExtractScriptNumberFromFilename(filename);

                    scripts.Add(new ChangeScript(file.Directory.Name, scriptNumber, file, encoding));
                }
                catch (UnrecognisedFilenameException)
                {
                    // ignore
                }
            }

            return(scripts);
        }
Beispiel #4
0
        private IEnumerable <ChangeScript> GetChangeScriptsFromAssembly(Assembly assembly)
        {
            try
            {
                this.infoTextWriter.WriteLine("Reading change scripts from assembly '" + assembly.FullName + "'...");
            }
            catch (IOException)
            {
                // ignore
            }

            var scripts = new List <ChangeScript>();

            var resourceScripts = assembly.GetManifestResourceNames().Where(resourceName => resourceName.EndsWith(".sql"));

            if (resourceNameFilter != null)
            {
                resourceScripts = resourceScripts.Where(resourceName => resourceNameFilter.Invoke(resourceName));
            }

            foreach (var resourceScript in resourceScripts)
            {
                string folder   = ExtractFolderNameWithUnderlines(resourceScript);
                string fileName = ExtractFileName(resourceScript, folder);

                try
                {
                    folder = folder.Replace("._", ".");
                    int scriptNumber = filenameParser.ExtractScriptNumberFromFilename(fileName);

                    var embeddedFileInfo = new EmbeddedFileInfo
                    {
                        Assembly = assembly, FileName = fileName, Folder = folder, ResourceName = resourceScript
                    };
                    scripts.Add(new ChangeScript(embeddedFileInfo, scriptNumber, encoding));
                }
                catch (UnrecognisedFilenameException)
                {
                    // ignore
                }
            }

            return(scripts);
        }