/// <summary> /// Initializes a new instance of the <see cref="ChangeScript" /> class. /// </summary> /// <param name="fileInfo">The embbeded file.</param> /// <param name="scriptNumber">The script number.</param> /// <param name="encoding">The encoding.</param> public ChangeScript(EmbeddedFileInfo fileInfo, int scriptNumber, Encoding encoding) : base(fileInfo.Folder, scriptNumber) { this.EmbeddedFileInfo = fileInfo; this.ScriptName = fileInfo.FileName; this.encoding = encoding; }
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; }