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