aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS-TheRevival/TerminalApplications/Internal/Com_Unzip.vb
blob: 09be14bdddd43a4faddab77fbd482c7b4dede3a0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Imports System.IO
Imports System.IO.Compression

Module Com_Unzip
    Public UnzipString As String

    Public Sub Unzip()
        UnzipString = RawCommand.Substring(6)
        If UnzipString Like "-d '*.zip'" Then
            Dim UnzipEXE() As String = UnzipString.Split("''")
            If File.Exists(Console.CurrentDirectory & "\" & UnzipEXE(1)) = True Then
                Dim UnzipDir As String = UnzipEXE(1).Replace(".zip", "")
                Dim UnzipRandomInt As Integer
                Dim UnzipRandom As New Random
                UnzipRandomInt = UnzipRandom.Next(1, 1000000)
                NewLine("Creating temporary place for selected archive...")
                Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
                NewLine("Extracting the file from a zip file...")
                ZipFile.ExtractToDirectory(Console.CurrentDirectory & "\" & UnzipEXE(1), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
                NewLine("Copying the extracted file into the current directory...")
                Directory.CreateDirectory(Console.CurrentDirectory & "\" & UnzipDir)
                CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, Console.CurrentDirectory & "\" & UnzipDir)
                NewLine("Removing temporary place of the file...")
                Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, True)
            Else

            End If
        End If
        If UnzipString Like "-f '*.zip'" Then
            Dim UnzipEXE() As String = UnzipString.Split("''")
            If File.Exists(Console.CurrentDirectory & "\" & UnzipEXE(1)) = True Then
                Dim UnzipDir As String = UnzipEXE(1).Replace(".zip", "")
                Dim UnzipRandomInt As Integer
                Dim UnzipRandom As New Random
                UnzipRandomInt = UnzipRandom.Next(1, 1000000)
                NewLine("Creating temporary place for selected archive...")
                Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
                NewLine("Extracting the file from a zip file...")
                ZipFile.ExtractToDirectory(Console.CurrentDirectory & "\" & UnzipEXE(1), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
                NewLine("Copying the extracted file into the current directory...")
                Directory.CreateDirectory(Console.CurrentDirectory & "\" & UnzipDir)
                CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, Console.CurrentDirectory)
                NewLine("Removing temporary place of the file...")
                Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, True)
            Else

            End If
        End If
    End Sub

    Public Sub CopyDirectory(ByVal SourcePath As String, ByVal DestPath As String, Optional ByVal Overwrite As Boolean = False)
        Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
        Dim DestDir As DirectoryInfo = New DirectoryInfo(DestPath)

        ' the source directory must exist, otherwise throw an exception
        If SourceDir.Exists Then
            ' if destination SubDir's parent SubDir does not exist throw an exception
            If Not DestDir.Parent.Exists Then
                Throw New DirectoryNotFoundException _
                  ("Destination directory does not exist: " + DestDir.Parent.FullName)
            End If

            If Not DestDir.Exists Then
                DestDir.Create()
            End If

            ' copy all the files of the current directory
            Dim ChildFile As FileInfo
            For Each ChildFile In SourceDir.GetFiles()
                If Overwrite Then
                    ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), True)
                Else
                    ' if Overwrite = false, copy the file only if it does not exist
                    ' this is done to avoid an IOException if a file already exists
                    ' this way the other files can be copied anyway...
                    NewLine("Copying " & ChildFile.Name & "...")
                    If Not File.Exists(Path.Combine(DestDir.FullName, ChildFile.Name)) Then
                        ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), False)
                        AddLine(" OK")
                    End If
                End If
            Next

            ' copy all the sub-directories by recursively calling this same routine
            Dim SubDir As DirectoryInfo
            For Each SubDir In SourceDir.GetDirectories()
                NewLine("Copying '" & SubDir.Name & "' directory ...")
                CopyDirectory(SubDir.FullName, Path.Combine(DestDir.FullName,
                  SubDir.Name), Overwrite)
                AddLine(" OK")
            Next
        Else
            Throw New DirectoryNotFoundException("Source directory does not exist: " + SourceDir.FullName)
        End If
    End Sub
End Module