93 lines
3.8 KiB
VB.net
93 lines
3.8 KiB
VB.net
Imports DigitalData.Modules.Logging
|
|
|
|
Public Class ConfigUtils
|
|
Private _Logger As Logger
|
|
Private _File As Filesystem.File
|
|
|
|
Private Const MIGRATE_DIRECTORY As String = "Migrate"
|
|
|
|
|
|
Public Sub New(LogConfig As LogConfig)
|
|
_Logger = LogConfig.GetLogger()
|
|
_File = New Filesystem.File(LogConfig)
|
|
End Sub
|
|
|
|
Public Sub MigrateConfig(SourceDirectory As String, TargetDirectory As String, Optional FilePattern As String = "*.*")
|
|
If IO.Directory.Exists(TargetDirectory) Then
|
|
_Logger.Warn("Config Migration aborted because new config directory [{0}] already exists!", TargetDirectory)
|
|
Exit Sub
|
|
End If
|
|
|
|
' Create target directory
|
|
Try
|
|
IO.Directory.CreateDirectory(TargetDirectory)
|
|
Catch ex As Exception
|
|
_Logger.Warn("Config Migration aborted because new config directory [{0}] could not be created!", TargetDirectory)
|
|
_Logger.Error(ex)
|
|
Exit Sub
|
|
End Try
|
|
|
|
' Create Migration directory
|
|
Dim oMigrationDirectory = IO.Path.Combine(SourceDirectory, MIGRATE_DIRECTORY)
|
|
Try
|
|
IO.Directory.CreateDirectory(oMigrationDirectory)
|
|
Catch ex As Exception
|
|
_Logger.Warn("Config Migration aborted because migration directory [{0}] could not be created!", oMigrationDirectory)
|
|
_Logger.Error(ex)
|
|
Exit Sub
|
|
End Try
|
|
|
|
For Each oPath In IO.Directory.EnumerateFiles(SourceDirectory, FilePattern)
|
|
Dim oFileInfo = New IO.FileInfo(oPath)
|
|
Try
|
|
IO.File.Copy(oPath, IO.Path.Combine(TargetDirectory, oFileInfo.Name))
|
|
Catch ex As Exception
|
|
_Logger.Warn("Could not move old config file {0} to new config location {1}", oFileInfo.Name, TargetDirectory)
|
|
_Logger.Error(ex)
|
|
End Try
|
|
Next
|
|
|
|
For Each oPath In IO.Directory.EnumerateFiles(SourceDirectory, FilePattern)
|
|
Dim oFileInfo = New IO.FileInfo(oPath)
|
|
Try
|
|
IO.File.Move(oPath, IO.Path.Combine(oMigrationDirectory, oFileInfo.Name))
|
|
Catch ex As Exception
|
|
_Logger.Warn("Could not move old config file {0} to migration directory {1}", oFileInfo.Name, oMigrationDirectory)
|
|
_Logger.Error(ex)
|
|
End Try
|
|
Next
|
|
|
|
For Each oDirectoryPath In IO.Directory.EnumerateDirectories(SourceDirectory, "*", IO.SearchOption.TopDirectoryOnly)
|
|
Dim oDirInfo As New IO.DirectoryInfo(oDirectoryPath)
|
|
|
|
If oDirInfo.FullName = TargetDirectory Or oDirInfo.FullName = oMigrationDirectory Then
|
|
Continue For
|
|
End If
|
|
|
|
Dim oNewDirectoryPath = IO.Path.Combine(TargetDirectory, oDirInfo.Name)
|
|
Try
|
|
_File.CopyDirectory(oDirInfo.FullName, oNewDirectoryPath, True)
|
|
Catch ex As Exception
|
|
_Logger.Warn("Could not move directory [{0}] to new path [{1}]", oDirInfo.FullName, oNewDirectoryPath)
|
|
_Logger.Error(ex)
|
|
End Try
|
|
Next
|
|
|
|
For Each oDirectoryPath In IO.Directory.EnumerateDirectories(SourceDirectory, "*", IO.SearchOption.TopDirectoryOnly)
|
|
Dim oDirInfo As New IO.DirectoryInfo(oDirectoryPath)
|
|
|
|
If oDirInfo.FullName = TargetDirectory Or oDirInfo.FullName = oMigrationDirectory Then
|
|
Continue For
|
|
End If
|
|
|
|
Dim oNewDirectoryPath = IO.Path.Combine(oMigrationDirectory, oDirInfo.Name)
|
|
Try
|
|
_File.CopyDirectory(oDirInfo.FullName, oNewDirectoryPath, True)
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
_Logger.Warn("Could not move directory [{0}] to migration directory [{1}]", oDirInfo.FullName, oNewDirectoryPath)
|
|
End Try
|
|
Next
|
|
End Sub
|
|
End Class
|