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