Archiver.st
author Claus Gittinger <cg@exept.de>
Tue, 28 Jan 2003 11:31:03 +0100
changeset 1138 5232eb3c94e0
parent 1131 fefc434f2871
child 1139 aea281a4e983
permissions -rw-r--r--
canView is true for ZipArchives
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
     1
"{ Package: 'stx:libbasic2' }"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
     2
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
     3
Object subclass:#Archiver
1089
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
     4
	instanceVariableNames:'process temporaryDirectory fileName outStream errorStream
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
     5
		synchron'
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
     6
	classVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
     7
	poolDictionaries:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
     8
	category:'System-Support-FileFormats'
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
     9
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    10
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    11
Archiver subclass:#GZipArchive
1089
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    12
	instanceVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    13
	classVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    14
	poolDictionaries:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    15
	privateIn:Archiver
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    16
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    17
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    18
Archiver subclass:#TarArchive
1089
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    19
	instanceVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    20
	classVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    21
	poolDictionaries:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    22
	privateIn:Archiver
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    23
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    24
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    25
Archiver subclass:#TarGZipArchive
1089
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    26
	instanceVariableNames:'tarArchiver tarFile'
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    27
	classVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    28
	poolDictionaries:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    29
	privateIn:Archiver
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    30
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    31
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    32
Archiver subclass:#ZipArchive
1089
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    33
	instanceVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    34
	classVariableNames:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    35
	poolDictionaries:''
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
    36
	privateIn:Archiver
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    37
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    38
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    39
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    40
!Archiver class methodsFor:'instance creation'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    41
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    42
with:aFilename
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    43
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    44
    | instance |
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    45
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    46
    instance := self new.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    47
    instance fileName:aFilename.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    48
    ^ instance
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    49
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    50
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    51
!Archiver class methodsFor:'classAccess'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    52
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    53
gzipArchive
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    54
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    55
    ^ GZipArchive
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    56
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    57
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    58
tarArchive
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    59
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    60
    ^ TarArchive
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    61
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    62
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    63
tarGZipArchive
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    64
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    65
    ^ TarGZipArchive
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    66
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    67
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    68
zipArchive
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    69
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    70
    ^ ZipArchive
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    71
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
    72
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    73
!Archiver class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    74
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    75
canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    76
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    77
    ^ false
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    78
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    79
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    80
canDragnDrop
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    81
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    82
    ^ true.
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    83
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    84
1098
4b5a0721ec55 checkin from browser
penk
parents: 1089
diff changeset
    85
canExtractFiles
4b5a0721ec55 checkin from browser
penk
parents: 1089
diff changeset
    86
4b5a0721ec55 checkin from browser
penk
parents: 1089
diff changeset
    87
    ^ false
4b5a0721ec55 checkin from browser
penk
parents: 1089
diff changeset
    88
!
4b5a0721ec55 checkin from browser
penk
parents: 1089
diff changeset
    89
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    90
canRemoveFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    91
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    92
    ^ false
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    93
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
    94
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    95
canViewFile
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    96
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    97
    ^ false
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    98
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
    99
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   100
hasTitleLine
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   101
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   102
    ^ false
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   103
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   104
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   105
!Archiver methodsFor:'accessing'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   106
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   107
errorStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   108
    "return the value of the instance variable 'errorStream' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   109
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   110
    ^ errorStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   111
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   112
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   113
errorStream:something
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   114
    "set the value of the instance variable 'errorStream' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   115
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   116
    errorStream := something.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   117
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   118
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   119
fileName
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   120
    "return the value of the instance variable 'fileName' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   121
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   122
    ^ fileName
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   123
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   124
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   125
fileName:something
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   126
    "set the value of the instance variable 'fileName' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   127
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   128
    fileName := something.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   129
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   130
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   131
outStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   132
    "return the value of the instance variable 'outStream' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   133
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   134
    ^ outStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   135
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   136
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   137
outStream:something
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   138
    "set the value of the instance variable 'outStream' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   139
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   140
    outStream := something.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   141
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   142
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   143
process
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   144
    "return the value of the instance variable 'process' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   145
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   146
    ^ process
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   147
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   148
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   149
process:something
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   150
    "set the value of the instance variable 'process' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   151
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   152
    process := something.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   153
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   154
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   155
synchron
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   156
    "return the value of the instance variable 'synchron' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   157
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   158
    ^ synchron
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   159
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   160
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   161
synchron:something
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   162
    "set the value of the instance variable 'synchron' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   163
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   164
    synchron := something.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   165
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   166
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   167
temporaryDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   168
    "return the value of the instance variable 'temporaryDirectory' (automatically generated)"
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   169
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   170
    temporaryDirectory isNil ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   171
        temporaryDirectory := Filename newTemporary.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   172
        temporaryDirectory makeDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   173
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   174
    ^ temporaryDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   175
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   176
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   177
!Archiver methodsFor:'actions'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   178
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   179
addFilesToArchiv:colOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   180
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   181
    self subclassResponsibility.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   182
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   183
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   184
extractTo:aColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   185
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   186
    self subclassResponsibility.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   187
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   188
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   189
listFilesFromArchiv
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   190
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   191
    self subclassResponsibility.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   192
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   193
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   194
removeFilesFromArchiv:aColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   195
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   196
    self subclassResponsibility.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   197
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   198
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   199
!Archiver methodsFor:'actions private'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   200
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   201
removeTemporaryDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   202
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   203
    | tmp |
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   204
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   205
    temporaryDirectory notNil ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   206
        tmp := self temporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   207
        (FileDirectory directoryNamed:(tmp directory)) removeDirectory:tmp baseName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   208
        temporaryDirectory := nil.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   209
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   210
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   211
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   212
stopProcess
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   213
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   214
    process notNil ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   215
        process terminateWithAllSubprocesses.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   216
        process waitUntilTerminated.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   217
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   218
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   219
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   220
!Archiver methodsFor:'command execution'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   221
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   222
executeCommand:cmd directory:aDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   223
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   224
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   225
    synchron isNil ifTrue:[synchron := true].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   226
    synchron ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   227
         OperatingSystem 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   228
            executeCommand:cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   229
            inputFrom:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   230
            outputTo:outStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   231
            errorTo:errorStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   232
            inDirectory:aDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   233
            lineWise:true
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   234
            onError:[:status| false].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   235
    ] ifFalse:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   236
        process := Process for:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   237
                [ 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   238
                     OperatingSystem 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   239
                        executeCommand:cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   240
                        inputFrom:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   241
                        outputTo:outStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   242
                        errorTo:errorStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   243
                        inDirectory:aDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   244
                        lineWise:true
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   245
                        onError:[:status| false].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   246
                ] 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   247
                valueNowOrOnUnwindDo:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   248
                    process := nil.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   249
                ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   250
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   251
        ] priority:(Processor systemBackgroundPriority).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   252
        process name:('ArchivFileCommand command >', cmd).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   253
        process resume.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   254
    ]
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   255
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   256
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   257
outStream:aOutStream errorStream:aErrorStream
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   258
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   259
    outStream := aOutStream.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   260
    errorStream := aErrorStream.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   261
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   262
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   263
outStream:aOutStream errorStream:aErrorStream synchron:aBoolean
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   264
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   265
    outStream := aOutStream.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   266
    errorStream := aErrorStream.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   267
    synchron := aBoolean
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   268
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   269
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   270
!Archiver methodsFor:'initialization & release'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   271
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   272
release
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   273
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   274
    self stopProcess.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   275
    self removeTemporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   276
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   277
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   278
!Archiver::GZipArchive class methodsFor:'columns'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   279
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   280
columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   281
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   282
    "/ columns in stream order
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   283
    "/  colums id          words to read
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   284
    ^ #( #(#method          1)      
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   285
         #(#crc             1)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   286
         #(#dateAndTime     3)   
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   287
         #(#compressSize    1)  
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   288
         #(#size            1) 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   289
         #(#ratio           1) 
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   290
         #(#fileName        #rest)
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   291
    ) 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   292
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   293
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   294
!Archiver::GZipArchive class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   295
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   296
canViewFile
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   297
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   298
    ^ true
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   299
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   300
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   301
hasTitleLine
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   302
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   303
    ^ true
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   304
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   305
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   306
!Archiver::GZipArchive class methodsFor:'zip archiv command options'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   307
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   308
GZipArchivFileOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   309
    ^ 'f'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   310
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   311
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   312
GZipArchivUnzipCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   313
    ^ 'gunzip'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   314
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   315
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   316
GZipArchivWriteToStdioOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   317
    ^ 'c'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   318
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   319
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   320
GZipArchivZipCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   321
    ^ 'gzip'
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   322
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   323
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   324
GZipArchivZipListOption
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   325
    ^ $l
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   326
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   327
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   328
GZipArchivZipQuietOption
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   329
    ^ $q
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   330
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   331
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   332
GZipArchivZipVerboseOption
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   333
    ^ $v
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   334
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   335
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   336
!Archiver::GZipArchive methodsFor:'actions'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   337
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   338
extractTo:aDirectory
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   339
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   340
    self unzipTo:aDirectory
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   341
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   342
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   343
extractTo:aDirectory with:extractFiles
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   344
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   345
    self unzipTo:aDirectory
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   346
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   347
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   348
listFilesFromArchiv
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   349
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   350
    | cmd dir|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   351
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   352
    self fileName isNil ifTrue:[ ^ self].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   353
    dir := self fileName directory.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   354
    cmd := self getFileListFromArchivCommand.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   355
    self executeCommand:cmd directory:dir 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   356
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   357
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   358
listFilesFromArchiv:aCol
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   359
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   360
    self listFilesFromArchiv
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   361
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   362
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   363
unzipTo:aDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   364
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   365
    | cmd file newFile|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   366
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   367
    (aDirectory exists not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   368
        DialogBox warn:'cant unzip to not existing directory ', aDirectory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   369
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   370
    (aDirectory isDirectory not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   371
        DialogBox warn:'cant unzip to file ', aDirectory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   372
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   373
    file := self fileName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   374
    (file directory asString = aDirectory asString) ifFalse:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   375
        file copyTo:(aDirectory construct:(file baseName)).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   376
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   377
    newFile := aDirectory construct:(file baseName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   378
    cmd := self getUnzipCommandForFile:newFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   379
    self executeCommand:cmd directory:aDirectory. 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   380
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   381
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   382
zipFile:aFile to:newFile
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   383
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   384
    | cmd directory|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   385
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   386
    directory := newFile directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   387
    (directory exists not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   388
        DialogBox warn:'cant unzip to not existing directory ', directory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   389
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   390
    (directory isDirectory not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   391
        DialogBox warn:'cant unzip to file ', directory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   392
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   393
    cmd := self getZipCommandForFile:aFile to:newFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   394
    self executeCommand:cmd directory:directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   395
    newFile exists ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   396
        self fileName:newFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   397
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   398
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   399
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   400
!Archiver::GZipArchive methodsFor:'command strings'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   401
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   402
getFileListFromArchivCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   403
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   404
    | stream cmd|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   405
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   406
    stream := WriteStream on:''.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   407
    stream nextPutAll:self class GZipArchivZipCommand.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   408
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   409
    stream nextPut:$-.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   410
    stream nextPut:self class GZipArchivZipListOption.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   411
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   412
    stream nextPut:$-.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   413
    stream nextPut:self class GZipArchivZipVerboseOption.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   414
    stream space.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   415
    stream nextPutAll:self fileName baseName.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   416
    cmd := stream contents.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   417
    stream close.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   418
    ^ cmd
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   419
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   420
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   421
getUnzipCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   422
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   423
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   424
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   425
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   426
    stream nextPutAll:self class GZipArchivUnzipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   427
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   428
    stream nextPutAll:self fileName baseName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   429
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   430
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   431
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   432
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   433
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   434
getUnzipCommandForFile:aFileName
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   435
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   436
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   437
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   438
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   439
    stream nextPutAll:self class GZipArchivUnzipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   440
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   441
    stream nextPutAll:aFileName asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   442
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   443
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   444
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   445
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   446
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   447
getZipCommandForFile:aFileName
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   448
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   449
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   450
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   451
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   452
    stream nextPutAll:self class GZipArchivZipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   453
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   454
    stream nextPutAll:aFileName asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   455
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   456
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   457
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   458
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   459
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   460
getZipCommandForFile:aFile to:newFile
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   461
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   462
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   463
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   464
    stream nextPutAll:self class GZipArchivZipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   465
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   466
    stream nextPut:$-.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   467
    stream nextPutAll:self class GZipArchivWriteToStdioOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   468
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   469
    stream nextPutAll:aFile asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   470
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   471
    stream nextPut:$>.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   472
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   473
    stream nextPutAll:newFile asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   474
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   475
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   476
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   477
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   478
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   479
!Archiver::TarArchive class methodsFor:'columns'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   480
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   481
columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   482
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   483
    "/  colums id          words to read
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   484
    ^ #( #(#permissions     1)      
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   485
         #(#ownerGroup      1)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   486
         #(#size            1)   
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   487
         #(#dateAndTime     2)  
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   488
         #(#fileName        #rest)
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   489
    ) 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   490
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   491
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   492
!Archiver::TarArchive class methodsFor:'command strings'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   493
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   494
TarArchivAddOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   495
    ^ 'r'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   496
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   497
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   498
TarArchivCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   499
    ^ 'tar'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   500
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   501
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   502
TarArchivDeleteOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   503
    ^ '--delete'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   504
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   505
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   506
TarArchivFileOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   507
    ^ 'f'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   508
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   509
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   510
TarArchivListContentsOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   511
    ^ 't'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   512
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   513
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   514
TarArchivListOptions
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   515
    ^ self TarArchivListContentsOption , self TarArchivVerboseOption 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   516
        , self TarArchivFileOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   517
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   518
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   519
TarArchivListZippedOptions
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   520
    ^ self TarArchivListContentsOption , self TarArchivVerboseOption 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   521
        , self TarArchivFileOption , self TarArchivZipOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   522
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   523
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   524
TarArchivUnpackInDirectoryOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   525
    ^ '-C '
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   526
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   527
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   528
TarArchivUnpackOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   529
    ^ 'x'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   530
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   531
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   532
TarArchivVerboseOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   533
    ^ 'v'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   534
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   535
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   536
TarArchivZipOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   537
    ^ 'z'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   538
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   539
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   540
!Archiver::TarArchive class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   541
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   542
canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   543
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   544
    ^ true
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   545
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   546
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   547
canRemoveFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   548
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   549
    ^ true
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   550
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   551
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   552
canViewFile
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   553
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   554
    ^ true
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   555
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   556
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   557
!Archiver::TarArchive methodsFor:'actions'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   558
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   559
addFilesToArchiv:colOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   560
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   561
    | cmd tempDir archivFile archivInTemp|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   562
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   563
    tempDir := self temporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   564
    archivFile := self fileName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   565
    archivInTemp := tempDir construct:(archivFile baseName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   566
    "/ copy files to be added to tempDir
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   567
    colOfFiles do:[ :file |
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   568
        file recursiveCopyTo:(tempDir construct:(file asFilename baseName))
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   569
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   570
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   571
    "/ copy tar archiv to tempDir
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   572
    archivFile copyTo:archivInTemp.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   573
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   574
    "/ addFiles to the tar archive
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   575
    cmd := self getAddFilesToTarArchiveCommandForArchiv:archivInTemp with:colOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   576
    self executeCommand:cmd directory:tempDir.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   577
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   578
    "/ copy tar archiv back
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   579
    archivInTemp copyTo:(self fileName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   580
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   581
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   582
extractTo:aDirectory 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   583
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   584
    ^ self extractTo:aDirectory with:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   585
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   586
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   587
extractTo:aDirectory with:files
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   588
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   589
    |execDir cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   590
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   591
    execDir := self fileName directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   592
    cmd := self getExtractSelectedFilesCommandForDirectory:aDirectory withSelection:files.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   593
    self executeCommand:cmd directory:execDir.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   594
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   595
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   596
extractWithOutDirectoryTo:aDirectory with:files
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   597
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   598
    |execDir tempDir tempFile|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   599
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   600
    execDir := self fileName directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   601
    tempDir := self temporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   602
    self extractTo:tempDir with:files.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   603
    files do:[ : aFileString |
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   604
        tempFile := self temporaryDirectory construct:aFileString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   605
        tempFile exists ifTrue:[
1131
fefc434f2871 checkin from browser
penk
parents: 1125
diff changeset
   606
            tempFile recursiveCopyTo:(aDirectory construct:(aFileString asFilename baseName)).
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   607
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   608
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   609
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   610
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   611
listFilesFromArchiv
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   612
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   613
    self listFilesFromArchiv:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   614
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   615
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   616
listFilesFromArchiv:newColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   617
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   618
    | cmd dir|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   619
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   620
    self fileName isNil ifTrue:[ ^ self].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   621
    dir := self fileName directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   622
    cmd := self getFileListFromArchivCommand:newColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   623
    self executeCommand:cmd directory:dir 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   624
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   625
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   626
removeFilesFromArchiv:aColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   627
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   628
    |cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   629
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   630
    cmd := self getRemoveFilesFromTarArchivFor:aColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   631
    self executeCommand:cmd directory:(self fileName directory). 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   632
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   633
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   634
!Archiver::TarArchive methodsFor:'command strings'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   635
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   636
getAddFilesToTarArchiveCommandForArchiv:archivFile with:aColOfFiles 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   637
    | cmd stream|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   638
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   639
    archivFile exists ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   640
        stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   641
        stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   642
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   643
        stream nextPutAll:self class TarArchivAddOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   644
        stream nextPutAll:self class TarArchivFileOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   645
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   646
        stream nextPutAll:archivFile asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   647
        aColOfFiles do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   648
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   649
            stream nextPutAll:(el asFilename baseName)
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   650
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   651
        cmd := stream contents
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   652
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   653
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   654
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   655
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   656
getExtractSelectedFilesCommandForDirectory:dir withSelection:sel 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   657
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   658
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   659
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   660
    stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   661
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   662
    stream nextPutAll:self class TarArchivUnpackOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   663
    stream nextPutAll:self class TarArchivFileOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   664
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   665
    stream nextPutAll:self fileName asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   666
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   667
    stream nextPutAll:self class TarArchivUnpackInDirectoryOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   668
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   669
    stream nextPutAll:dir asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   670
    sel notNil ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   671
        sel do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   672
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   673
            stream nextPutAll:(el asString)
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   674
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   675
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   676
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   677
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   678
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   679
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   680
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   681
getFileListFromArchivCommand:aColOfFiles 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   682
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   683
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   684
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   685
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   686
    stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   687
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   688
    stream nextPutAll:self class TarArchivListOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   689
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   690
    stream nextPutAll:self fileName baseName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   691
    aColOfFiles notNil ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   692
        aColOfFiles do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   693
            stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   694
            stream nextPutAll:(el baseName)
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   695
        ]
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   696
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   697
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   698
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   699
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   700
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   701
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   702
getRemoveFilesFromTarArchivFor:sel 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   703
    | stream filename|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   704
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   705
    filename := self fileName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   706
    filename exists ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   707
        stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   708
        stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   709
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   710
        stream nextPutAll:self class TarArchivDeleteOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   711
        stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   712
        stream nextPut:$-.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   713
        stream nextPutAll:self class TarArchivFileOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   714
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   715
        stream nextPutAll:filename asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   716
        sel do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   717
            stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   718
            stream nextPutAll:el
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   719
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   720
        ^ stream contents
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   721
    ]
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   722
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   723
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   724
!Archiver::TarGZipArchive class methodsFor:'columns'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   725
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   726
columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   727
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   728
    ^ Archiver tarArchive columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   729
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   730
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   731
!Archiver::TarGZipArchive class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   732
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   733
canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   734
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   735
    ^ Archiver tarArchive canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   736
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   737
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   738
canRemoveFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   739
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   740
    ^ Archiver tarArchive canRemoveFiles
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   741
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   742
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   743
canViewFile
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   744
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   745
    ^ Archiver tarArchive canViewFile
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   746
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   747
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   748
!Archiver::TarGZipArchive methodsFor:'accessing'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   749
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   750
fileName:aFile
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   751
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   752
    | tempDir file gzipArchiver suffix|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   753
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   754
    super fileName:aFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   755
    " unzip file in tempDirectory and do all the things with tar file "
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   756
    tempDir := self temporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   757
    gzipArchiver := Archiver::GZipArchive with:(self fileName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   758
    gzipArchiver unzipTo:tempDir.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   759
    suffix := self fileName suffix.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   760
    file := self fileName withoutSuffix.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   761
    file := file baseName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   762
    suffix = 'tgz' ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   763
        file := file , '.tar'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   764
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   765
    tarFile := self temporaryDirectory construct:file.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   766
    tarArchiver := Archiver tarArchive with:tarFile.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   767
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   768
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   769
!Archiver::TarGZipArchive methodsFor:'actions'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   770
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   771
addFilesToArchiv:colOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   772
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   773
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   774
    tarArchiver addFilesToArchiv:colOfFiles.
1098
4b5a0721ec55 checkin from browser
penk
parents: 1089
diff changeset
   775
    "/ synchronize the tar archive under temporary file with archiv file position
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   776
    self synchronize.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   777
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   778
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   779
extractTo:aDirectory 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   780
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   781
    self extractTo:aDirectory with:nil.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   782
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   783
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   784
extractTo:aDirectory with:col
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   785
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   786
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   787
    tarArchiver extractTo:aDirectory with:col.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   788
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   789
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   790
extractWithOutDirectoryTo:aDirectory with:files
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   791
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   792
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   793
    tarArchiver extractWithOutDirectoryTo:aDirectory with:files.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   794
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   795
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   796
listFilesFromArchiv
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   797
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   798
    self listFilesFromArchiv:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   799
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   800
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   801
listFilesFromArchiv:newColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   802
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   803
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   804
    ^ tarArchiver listFilesFromArchiv:newColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   805
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   806
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   807
removeFilesFromArchiv:aColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   808
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   809
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   810
    tarArchiver removeFilesFromArchiv:aColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   811
    self synchronize.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   812
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   813
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   814
!Archiver::TarGZipArchive methodsFor:'actions private'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   815
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   816
setCommandOptions
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   817
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   818
    tarArchiver outStream:(self outStream).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   819
    tarArchiver errorStream:(self errorStream).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   820
    tarArchiver synchron:(self synchron).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   821
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   822
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   823
synchronize
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   824
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   825
    |gzipArchiver|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   826
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   827
    gzipArchiver := GZipArchive with:nil.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   828
    gzipArchiver zipFile:(tarArchiver fileName) to:(self fileName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   829
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   830
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   831
!Archiver::TarGZipArchive methodsFor:'initialization & release'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   832
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   833
release
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   834
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   835
    super release.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   836
    tarArchiver release.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   837
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   838
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   839
!Archiver::ZipArchive class methodsFor:'columns'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   840
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   841
columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   842
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   843
    "/  colums id          words to read
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   844
    ^ #( #(#permissions     1)      
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   845
         #(#version         2)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   846
         #(#size            1)     
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   847
         #(#type            1)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   848
         #(#ratio           1)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   849
         #(#dateAndTime     2)  
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   850
         #(#fileName        #rest)
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   851
    ) 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   852
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   853
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   854
!Archiver::ZipArchive class methodsFor:'command strings'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   855
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   856
UnzipExtDirectoryOption
f859684fd729 next stage
penk
parents: 1087
diff changeset
   857
    ^ $d
f859684fd729 next stage
penk
parents: 1087
diff changeset
   858
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   859
f859684fd729 next stage
penk
parents: 1087
diff changeset
   860
UnzipOverwriteExistingFilesOption
f859684fd729 next stage
penk
parents: 1087
diff changeset
   861
    ^ $o
f859684fd729 next stage
penk
parents: 1087
diff changeset
   862
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   863
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   864
ZipArchivCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   865
    ^ 'zip'
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   866
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   867
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   868
ZipDeleteOption
f859684fd729 next stage
penk
parents: 1087
diff changeset
   869
    ^ $d
f859684fd729 next stage
penk
parents: 1087
diff changeset
   870
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   871
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   872
ZipHeaderOption
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   873
    ^ $h
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   874
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   875
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   876
ZipListCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   877
    ^ 'unzip'
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   878
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   879
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   880
ZipListOption
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   881
    ^ $Z
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   882
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   883
1089
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   884
ZipOverwriteExistingFilesOption
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   885
    ^ $o
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   886
!
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   887
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   888
ZipRecursiveOption
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   889
    ^ $r
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   890
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   891
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   892
ZipTotalOption
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   893
    ^ $t
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   894
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   895
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   896
ZipUnzipCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   897
    ^ 'unzip'
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   898
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   899
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   900
ZipUnzipExtDirectoryOption
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   901
    ^ 'd'
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   902
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   903
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   904
!Archiver::ZipArchive class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   905
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   906
canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   907
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   908
    ^ true
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   909
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   910
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   911
canRemoveFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   912
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   913
    ^ true
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   914
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   915
1138
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   916
canViewFile
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   917
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   918
    ^ true
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   919
!
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   920
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   921
hasLastLine
f859684fd729 next stage
penk
parents: 1087
diff changeset
   922
f859684fd729 next stage
penk
parents: 1087
diff changeset
   923
    ^ true
f859684fd729 next stage
penk
parents: 1087
diff changeset
   924
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   925
f859684fd729 next stage
penk
parents: 1087
diff changeset
   926
hasTitleLine
f859684fd729 next stage
penk
parents: 1087
diff changeset
   927
f859684fd729 next stage
penk
parents: 1087
diff changeset
   928
    ^ true
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   929
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   930
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   931
!Archiver::ZipArchive methodsFor:'actions'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   932
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   933
addFilesToArchiv:colOfFiles
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   934
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   935
    |cmd tempDir archivFile archivInTemp|
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   936
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   937
    tempDir := self temporaryDirectory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   938
    archivFile := self fileName.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   939
    archivInTemp := tempDir construct:(archivFile baseName).
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   940
    "/ copy files to be added to tempDir
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   941
    colOfFiles do:[ :file |
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   942
        file recursiveCopyTo:(tempDir construct:(file asFilename baseName))
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   943
    ].
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   944
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   945
    "/ copy archiv to tempDir
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   946
    archivFile copyTo:archivInTemp.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   947
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   948
    "/ addFiles to the tar archive
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   949
    cmd := self getAddFilesToArchiveCommandForArchiv:archivInTemp with:colOfFiles.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   950
    self executeCommand:cmd directory:tempDir.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   951
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   952
    "/ copy tar archiv back
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   953
    archivInTemp copyTo:(self fileName).
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   954
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   955
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   956
extractTo:aDirectory 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   957
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   958
    ^ self extractTo:aDirectory with:nil
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   959
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   960
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   961
extractTo:aDirectory with:files
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   962
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   963
    |execDir cmd|
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   964
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   965
    execDir := self fileName directory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   966
    cmd := self getExtractSelectedFilesCommandForDirectory:aDirectory withSelection:files.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   967
    self executeCommand:cmd directory:execDir.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   968
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   969
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   970
extractWithOutDirectoryTo:aDirectory with:files
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   971
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   972
    |execDir tempDir tempFile targetFile|
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   973
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   974
    execDir := self fileName directory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   975
    tempDir := self temporaryDirectory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   976
    self extractTo:tempDir with:files.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   977
    self halt.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   978
    files do:[ : aFileString |
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   979
        tempFile := self temporaryDirectory construct:aFileString.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   980
        targetFile := aDirectory construct:(aFileString asFilename baseName).
f859684fd729 next stage
penk
parents: 1087
diff changeset
   981
        targetFile exists ifTrue:[
f859684fd729 next stage
penk
parents: 1087
diff changeset
   982
            targetFile recursiveRemove.
f859684fd729 next stage
penk
parents: 1087
diff changeset
   983
        ].
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   984
        tempFile exists ifTrue:[
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   985
            tempFile recursiveCopyTo:targetFile.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   986
        ].
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   987
    ].
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   988
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   989
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   990
listFilesFromArchiv
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   991
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   992
    self listFilesFromArchiv:nil
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   993
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   994
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   995
listFilesFromArchiv:newColOfFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   996
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   997
    |dir cmd|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   998
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   999
    self fileName isNil ifTrue:[ ^ self].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1000
    dir := self fileName directory.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1001
    cmd := self getFileListFromArchivCommand:newColOfFiles.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1002
    self executeCommand:cmd directory:dir 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1003
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1004
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1005
removeFilesFromArchiv:aColOfFiles
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1006
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1007
    |cmd|
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1008
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1009
    cmd := self getRemoveFilesFromArchivFor:aColOfFiles.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1010
    self executeCommand:cmd directory:(self fileName directory). 
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1011
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1012
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1013
!Archiver::ZipArchive methodsFor:'command strings'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1014
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1015
getAddFilesToArchiveCommandForArchiv:archivFile with:aColOfFiles 
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1016
    | cmd stream|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1017
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1018
    archivFile exists ifTrue:[
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1019
        stream := WriteStream on:''.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1020
        stream nextPutAll:self class ZipArchivCommand.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1021
        stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1022
        stream nextPut:$-.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1023
        stream nextPut:self class ZipRecursiveOption.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1024
        stream space.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1025
        stream nextPutAll:archivFile asString.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1026
        aColOfFiles do:[:el | 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1027
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1028
            stream nextPutAll:(el asFilename baseName)
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1029
        ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1030
        cmd := stream contents
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1031
    ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1032
    ^ cmd
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1033
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1034
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1035
getAddFilesToTarArchiveCommand:aColOfFiles 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1036
    |filename cmd stream|
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1037
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1038
    filename := self fileName.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1039
    filename exists ifTrue:[
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1040
        stream := WriteStream on:''.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1041
        stream nextPutAll:self class TarArchivCommand.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1042
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1043
        stream nextPutAll:self class TarArchivAddOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1044
        stream nextPutAll:self class TarArchivFileOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1045
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1046
        stream nextPutAll:filename asString.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1047
        aColOfFiles do:[:el | 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1048
            stream space.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1049
            stream nextPutAll:(el baseName)
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1050
        ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1051
        cmd := stream contents
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1052
    ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1053
    ^ cmd
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1054
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1055
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1056
getAddFilesToTarArchiveCommandForArchivFor:aColOfFiles 
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1057
    | cmd stream|
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1058
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1059
    stream := WriteStream on:''.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1060
    stream nextPutAll:self class ZipArchivCommand.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1061
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1062
    stream nextPut:$-.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1063
    stream nextPut:self class ZipRecursiveOption.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1064
    stream space.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1065
    stream nextPutAll:self fileName asString.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1066
    aColOfFiles do:[:el | 
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1067
        stream space.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1068
        stream nextPutAll:(el asString)
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1069
    ].
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1070
    cmd := stream contents.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1071
    stream close.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1072
    ^ cmd
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1073
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1074
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1075
getExtractSelectedFilesCommandForDirectory:dir withSelection:sel 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1076
    | stream cmd|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1077
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1078
    stream := WriteStream on:''.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1079
    stream nextPutAll:self class ZipUnzipCommand.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1080
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1081
    stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1082
    stream nextPut:self class UnzipOverwriteExistingFilesOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1083
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1084
    stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1085
    stream nextPut:self class UnzipExtDirectoryOption.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1086
    stream space.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1087
    stream nextPutAll:dir asString.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1088
    stream space.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1089
    stream nextPutAll:self fileName asString.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1090
    sel notNil ifTrue:[
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1091
        sel do:[:el | 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1092
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1093
            stream nextPutAll:(el asString)
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1094
        ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1095
    ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1096
    cmd := stream contents.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1097
    stream close.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1098
    ^ cmd
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1099
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1100
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1101
getFileListFromArchivCommand:aColOfFiles 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1102
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1103
    | stream cmd|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1104
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1105
    stream := WriteStream on:''.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1106
    stream nextPutAll:self class ZipUnzipCommand.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1107
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1108
    stream nextPut:$-.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1109
    stream nextPut:self class ZipListOption.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1110
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1111
    stream nextPut:$-.
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1112
    stream nextPut:$-.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1113
    stream nextPut:self class ZipHeaderOption.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1114
    stream nextPut:$-.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1115
    stream nextPut:self class ZipTotalOption.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1116
    stream space.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1117
    stream nextPutAll:self fileName asString.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1118
    aColOfFiles notNil ifTrue:[
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1119
        aColOfFiles do:[:el | 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1120
            stream space.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1121
            stream nextPutAll:(el baseName)
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1122
        ]
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1123
    ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1124
    cmd := stream contents.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1125
    stream close.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1126
    ^ cmd
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1127
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1128
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1129
getRemoveFilesFromArchivFor:sel 
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1130
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1131
    |stream cmd|
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1132
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1133
    stream := WriteStream on:''.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1134
    stream nextPutAll:self class ZipArchivCommand.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1135
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1136
    stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1137
    stream nextPut:self class ZipDeleteOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1138
    stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1139
    stream nextPutAll:self fileName asString.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1140
    sel do:[:el | 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1141
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1142
        stream nextPutAll:(el asString)
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1143
    ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1144
    cmd := stream contents.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1145
    stream close.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1146
    ^ cmd
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1147
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1148
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1149
getRemoveFilesFromTarArchivFor:sel 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1150
    | stream filename|
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1151
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1152
    filename := self fileName.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1153
    filename exists ifTrue:[
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1154
        stream := WriteStream on:''.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1155
        stream nextPutAll:self class TarArchivCommand.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1156
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1157
        stream nextPutAll:self class TarArchivDeleteOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1158
        stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1159
        stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1160
        stream nextPutAll:self class TarArchivFileOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1161
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1162
        stream nextPutAll:filename asString.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1163
        sel do:[:el | 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1164
            stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1165
            stream nextPutAll:el
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1166
        ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1167
        ^ stream contents
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1168
    ]
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1169
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1170
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1171
!Archiver class methodsFor:'documentation'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1172
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1173
version
1138
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
  1174
    ^ '$Header: /cvs/stx/stx/libbasic2/Archiver.st,v 1.10 2003-01-28 10:31:03 cg Exp $'
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1175
! !