Archiver.st
author Claus Gittinger <cg@exept.de>
Thu, 13 Feb 2003 13:27:29 +0100
changeset 1144 75008d5f9632
parent 1139 aea281a4e983
child 1145 9a6688b7139a
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 class methodsFor:'zip archiv command options'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   307
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   308
GZipArchivFileOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   309
    ^ 'f'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   310
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   311
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   312
GZipArchivUnzipCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   313
    ^ 'gunzip'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   314
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   315
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   316
GZipArchivWriteToStdioOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   317
    ^ 'c'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   318
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   319
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   320
GZipArchivZipCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   321
    ^ 'gzip'
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   322
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   323
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   324
GZipArchivZipListOption
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   325
    ^ $l
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   326
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   327
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   328
GZipArchivZipQuietOption
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   329
    ^ $q
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   330
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   331
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   332
GZipArchivZipVerboseOption
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   333
    ^ $v
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   334
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   335
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   336
!Archiver::GZipArchive methodsFor:'actions'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   337
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   338
extractTo:aDirectory
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   339
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   340
    self unzipTo:aDirectory
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   341
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   342
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   343
extractTo:aDirectory with:extractFiles
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   344
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   345
    self unzipTo:aDirectory
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   346
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   347
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   348
listFilesFromArchiv
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   349
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   350
    | cmd dir|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   351
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   352
    self fileName isNil ifTrue:[ ^ self].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   353
    dir := self fileName directory.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   354
    cmd := self getFileListFromArchivCommand.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   355
    self executeCommand:cmd directory:dir 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   356
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   357
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   358
listFilesFromArchiv:aCol
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   359
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   360
    self listFilesFromArchiv
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   361
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   362
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   363
unzipTo:aDirectory
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   364
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   365
    | cmd file newFile|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   366
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   367
    (aDirectory exists not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   368
        DialogBox warn:'cant unzip to not existing directory ', aDirectory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   369
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   370
    (aDirectory isDirectory not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   371
        DialogBox warn:'cant unzip to file ', aDirectory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   372
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   373
    file := self fileName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   374
    (file directory asString = aDirectory asString) ifFalse:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   375
        file copyTo:(aDirectory construct:(file baseName)).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   376
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   377
    newFile := aDirectory construct:(file baseName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   378
    cmd := self getUnzipCommandForFile:newFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   379
    self executeCommand:cmd directory:aDirectory. 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   380
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   381
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   382
zipFile:aFile to:newFile
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   383
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   384
    | cmd directory|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   385
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   386
    directory := newFile directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   387
    (directory exists not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   388
        DialogBox warn:'cant unzip to not existing directory ', directory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   389
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   390
    (directory isDirectory not) ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   391
        DialogBox warn:'cant unzip to file ', directory asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   392
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   393
    cmd := self getZipCommandForFile:aFile to:newFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   394
    self executeCommand:cmd directory:directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   395
    newFile exists ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   396
        self fileName:newFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   397
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   398
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   399
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   400
!Archiver::GZipArchive methodsFor:'command strings'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   401
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   402
getFileListFromArchivCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   403
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   404
    | stream cmd|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   405
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   406
    stream := WriteStream on:''.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   407
    stream nextPutAll:self class GZipArchivZipCommand.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   408
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   409
    stream nextPut:$-.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   410
    stream nextPut:self class GZipArchivZipListOption.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   411
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   412
    stream nextPut:$-.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   413
    stream nextPut:self class GZipArchivZipVerboseOption.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   414
    stream space.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   415
    stream nextPutAll:self fileName baseName.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   416
    cmd := stream contents.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   417
    stream close.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   418
    ^ cmd
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   419
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   420
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   421
getUnzipCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   422
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   423
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   424
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   425
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   426
    stream nextPutAll:self class GZipArchivUnzipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   427
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   428
    stream nextPutAll:self fileName baseName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   429
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   430
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   431
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   432
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   433
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   434
getUnzipCommandForFile:aFileName
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   435
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   436
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   437
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   438
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   439
    stream nextPutAll:self class GZipArchivUnzipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   440
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   441
    stream nextPutAll:aFileName asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   442
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   443
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   444
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   445
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   446
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   447
getZipCommandForFile:aFileName
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   448
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   449
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   450
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   451
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   452
    stream nextPutAll:self class GZipArchivZipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   453
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   454
    stream nextPutAll:aFileName asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   455
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   456
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   457
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   458
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   459
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   460
getZipCommandForFile:aFile to:newFile
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   461
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   462
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   463
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   464
    stream nextPutAll:self class GZipArchivZipCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   465
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   466
    stream nextPut:$-.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   467
    stream nextPutAll:self class GZipArchivWriteToStdioOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   468
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   469
    stream nextPutAll:aFile asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   470
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   471
    stream nextPut:$>.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   472
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   473
    stream nextPutAll:newFile asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   474
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   475
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   476
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   477
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   478
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   479
!Archiver::TarArchive class methodsFor:'columns'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   480
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   481
columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   482
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   483
    "/  colums id          words to read
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   484
    ^ #( #(#permissions     1)      
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   485
         #(#ownerGroup      1)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   486
         #(#size            1)   
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   487
         #(#dateAndTime     2)  
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   488
         #(#fileName        #rest)
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   489
    ) 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   490
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   491
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   492
!Archiver::TarArchive class methodsFor:'command strings'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   493
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   494
TarArchivAddOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   495
    ^ 'r'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   496
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   497
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   498
TarArchivCommand
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   499
    ^ 'tar'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   500
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   501
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   502
TarArchivDeleteOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   503
    ^ '--delete'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   504
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   505
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   506
TarArchivFileOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   507
    ^ 'f'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   508
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   509
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   510
TarArchivListContentsOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   511
    ^ 't'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   512
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   513
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   514
TarArchivListOptions
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   515
    ^ self TarArchivListContentsOption , self TarArchivVerboseOption 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   516
        , self TarArchivFileOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   517
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   518
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   519
TarArchivListZippedOptions
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   520
    ^ self TarArchivListContentsOption , self TarArchivVerboseOption 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   521
        , self TarArchivFileOption , self TarArchivZipOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   522
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   523
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   524
TarArchivUnpackInDirectoryOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   525
    ^ '-C '
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   526
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   527
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   528
TarArchivUnpackOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   529
    ^ 'x'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   530
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   531
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   532
TarArchivVerboseOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   533
    ^ 'v'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   534
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   535
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   536
TarArchivZipOption
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   537
    ^ 'z'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   538
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   539
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   540
!Archiver::TarArchive class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   541
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   542
canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   543
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   544
    ^ true
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   545
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   546
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   547
canRemoveFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   548
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   549
    ^ true
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   550
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   551
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   552
canViewFile
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   553
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   554
    ^ true
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   555
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   556
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   557
!Archiver::TarArchive methodsFor:'actions'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   558
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   559
addFilesToArchiv:colOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   560
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   561
    | cmd tempDir archivFile archivInTemp|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   562
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   563
    tempDir := self temporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   564
    archivFile := self fileName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   565
    archivInTemp := tempDir construct:(archivFile baseName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   566
    "/ copy files to be added to tempDir
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   567
    colOfFiles do:[ :file |
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   568
        file recursiveCopyTo:(tempDir construct:(file asFilename baseName))
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   569
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   570
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   571
    "/ copy tar archiv to tempDir
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   572
    archivFile copyTo:archivInTemp.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   573
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   574
    "/ addFiles to the tar archive
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   575
    cmd := self getAddFilesToTarArchiveCommandForArchiv:archivInTemp with:colOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   576
    self executeCommand:cmd directory:tempDir.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   577
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   578
    "/ copy tar archiv back
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   579
    archivInTemp copyTo:(self fileName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   580
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   581
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   582
extractTo:aDirectory 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   583
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   584
    ^ self extractTo:aDirectory with:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   585
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   586
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   587
extractTo:aDirectory with:files
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   588
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   589
    |execDir cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   590
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   591
    execDir := self fileName directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   592
    cmd := self getExtractSelectedFilesCommandForDirectory:aDirectory withSelection:files.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   593
    self executeCommand:cmd directory:execDir.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   594
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   595
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   596
extractWithOutDirectoryTo:aDirectory with:files
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   597
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   598
    |execDir tempDir tempFile|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   599
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   600
    execDir := self fileName directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   601
    tempDir := self temporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   602
    self extractTo:tempDir with:files.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   603
    files do:[ : aFileString |
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   604
        tempFile := self temporaryDirectory construct:aFileString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   605
        tempFile exists ifTrue:[
1131
fefc434f2871 checkin from browser
penk
parents: 1125
diff changeset
   606
            tempFile recursiveCopyTo:(aDirectory construct:(aFileString asFilename baseName)).
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   607
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   608
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   609
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   610
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   611
listFilesFromArchiv
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   612
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   613
    self listFilesFromArchiv:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   614
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   615
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   616
listFilesFromArchiv:newColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   617
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   618
    | cmd dir|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   619
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   620
    self fileName isNil ifTrue:[ ^ self].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   621
    dir := self fileName directory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   622
    cmd := self getFileListFromArchivCommand:newColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   623
    self executeCommand:cmd directory:dir 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   624
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   625
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   626
removeFilesFromArchiv:aColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   627
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   628
    |cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   629
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   630
    cmd := self getRemoveFilesFromTarArchivFor:aColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   631
    self executeCommand:cmd directory:(self fileName directory). 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   632
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   633
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   634
!Archiver::TarArchive methodsFor:'command strings'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   635
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   636
getAddFilesToTarArchiveCommandForArchiv:archivFile with:aColOfFiles 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   637
    | cmd stream|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   638
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   639
    archivFile exists ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   640
        stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   641
        stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   642
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   643
        stream nextPutAll:self class TarArchivAddOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   644
        stream nextPutAll:self class TarArchivFileOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   645
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   646
        stream nextPutAll:archivFile asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   647
        aColOfFiles do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   648
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   649
            stream nextPutAll:(el asFilename baseName)
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   650
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   651
        cmd := stream contents
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   652
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   653
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   654
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   655
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   656
getExtractSelectedFilesCommandForDirectory:dir withSelection:sel 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   657
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   658
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   659
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   660
    stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   661
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   662
    stream nextPutAll:self class TarArchivUnpackOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   663
    stream nextPutAll:self class TarArchivFileOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   664
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   665
    stream nextPutAll:self fileName asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   666
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   667
    stream nextPutAll:self class TarArchivUnpackInDirectoryOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   668
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   669
    stream nextPutAll:dir asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   670
    sel notNil ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   671
        sel do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   672
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   673
            stream nextPutAll:(el asString)
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   674
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   675
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   676
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   677
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   678
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   679
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   680
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   681
getFileListFromArchivCommand:aColOfFiles 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   682
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   683
    | stream cmd|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   684
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   685
    stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   686
    stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   687
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   688
    stream nextPutAll:self class TarArchivListOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   689
    stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   690
    stream nextPutAll:self fileName baseName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   691
    aColOfFiles notNil ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   692
        aColOfFiles do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   693
            stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   694
            stream nextPutAll:(el baseName)
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   695
        ]
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   696
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   697
    cmd := stream contents.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   698
    stream close.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   699
    ^ cmd
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   700
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   701
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   702
getRemoveFilesFromTarArchivFor:sel 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   703
    | stream filename|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   704
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   705
    filename := self fileName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   706
    filename exists ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   707
        stream := WriteStream on:''.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   708
        stream nextPutAll:self class TarArchivCommand.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   709
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   710
        stream nextPutAll:self class TarArchivDeleteOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   711
        stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   712
        stream nextPut:$-.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   713
        stream nextPutAll:self class TarArchivFileOption.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   714
        stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   715
        stream nextPutAll:filename asString.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   716
        sel do:[:el | 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   717
            stream space.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   718
            stream nextPutAll:el
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   719
        ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   720
        ^ stream contents
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   721
    ]
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   722
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   723
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   724
!Archiver::TarGZipArchive class methodsFor:'columns'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   725
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   726
columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   727
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   728
    ^ Archiver tarArchive columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   729
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   730
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   731
!Archiver::TarGZipArchive class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   732
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   733
canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   734
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   735
    ^ Archiver tarArchive canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   736
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   737
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   738
canRemoveFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   739
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   740
    ^ Archiver tarArchive canRemoveFiles
1106
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   741
!
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   742
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   743
canViewFile
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   744
893c2c508df1 checkin from browser
penk
parents: 1098
diff changeset
   745
    ^ Archiver tarArchive canViewFile
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   746
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   747
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   748
!Archiver::TarGZipArchive methodsFor:'accessing'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   749
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   750
fileName:aFile
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   751
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   752
    | tempDir file gzipArchiver suffix|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   753
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   754
    super fileName:aFile.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   755
    " unzip file in tempDirectory and do all the things with tar file "
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   756
    tempDir := self temporaryDirectory.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   757
    gzipArchiver := Archiver::GZipArchive with:(self fileName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   758
    gzipArchiver unzipTo:tempDir.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   759
    suffix := self fileName suffix.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   760
    file := self fileName withoutSuffix.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   761
    file := file baseName.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   762
    suffix = 'tgz' ifTrue:[
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   763
        file := file , '.tar'
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   764
    ].
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   765
    tarFile := self temporaryDirectory construct:file.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   766
    tarArchiver := Archiver tarArchive with:tarFile.
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   767
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   768
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   769
!Archiver::TarGZipArchive methodsFor:'actions'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   770
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   771
addFilesToArchiv:colOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   772
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   773
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   774
    tarArchiver addFilesToArchiv:colOfFiles.
1098
4b5a0721ec55 checkin from browser
penk
parents: 1089
diff changeset
   775
    "/ synchronize the tar archive under temporary file with archiv file position
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   776
    self synchronize.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   777
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   778
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   779
extractTo:aDirectory 
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   780
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   781
    self extractTo:aDirectory with:nil.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   782
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   783
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   784
extractTo:aDirectory with:col
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   785
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   786
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   787
    tarArchiver extractTo:aDirectory with:col.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   788
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   789
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   790
extractWithOutDirectoryTo:aDirectory with:files
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   791
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   792
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   793
    tarArchiver extractWithOutDirectoryTo:aDirectory with:files.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   794
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   795
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   796
listFilesFromArchiv
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   797
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   798
    self listFilesFromArchiv:nil
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   799
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   800
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   801
listFilesFromArchiv:newColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   802
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   803
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   804
    ^ tarArchiver listFilesFromArchiv:newColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   805
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   806
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   807
removeFilesFromArchiv:aColOfFiles
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   808
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   809
    self setCommandOptions.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   810
    tarArchiver removeFilesFromArchiv:aColOfFiles.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   811
    self synchronize.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   812
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   813
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   814
!Archiver::TarGZipArchive methodsFor:'actions private'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   815
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   816
setCommandOptions
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   817
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   818
    tarArchiver outStream:(self outStream).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   819
    tarArchiver errorStream:(self errorStream).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   820
    tarArchiver synchron:(self synchron).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   821
!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   822
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   823
synchronize
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   824
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   825
    |gzipArchiver|
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   826
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   827
    gzipArchiver := GZipArchive with:nil.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   828
    gzipArchiver zipFile:(tarArchiver fileName) to:(self fileName).
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   829
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   830
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   831
!Archiver::TarGZipArchive methodsFor:'initialization & release'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   832
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   833
release
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   834
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   835
    super release.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   836
    tarArchiver release.
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   837
! !
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
   838
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   839
!Archiver::ZipArchive class methodsFor:'columns'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   840
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   841
columns
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   842
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   843
    "/  colums id          words to read
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   844
    ^ #( #(#permissions     1)      
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   845
         #(#version         2)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   846
         #(#size            1)     
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   847
         #(#type            1)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   848
         #(#ratio           1)    
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   849
         #(#dateAndTime     2)  
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   850
         #(#fileName        #rest)
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   851
    ) 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   852
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   853
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   854
!Archiver::ZipArchive class methodsFor:'command strings'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   855
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   856
UnzipExtDirectoryOption
f859684fd729 next stage
penk
parents: 1087
diff changeset
   857
    ^ $d
f859684fd729 next stage
penk
parents: 1087
diff changeset
   858
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   859
f859684fd729 next stage
penk
parents: 1087
diff changeset
   860
UnzipOverwriteExistingFilesOption
f859684fd729 next stage
penk
parents: 1087
diff changeset
   861
    ^ $o
f859684fd729 next stage
penk
parents: 1087
diff changeset
   862
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   863
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   864
ZipArchivCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   865
    ^ 'zip'
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   866
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   867
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   868
ZipDeleteOption
f859684fd729 next stage
penk
parents: 1087
diff changeset
   869
    ^ $d
f859684fd729 next stage
penk
parents: 1087
diff changeset
   870
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   871
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   872
ZipListCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   873
    ^ 'unzip'
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   874
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   875
1089
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   876
ZipOverwriteExistingFilesOption
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   877
    ^ $o
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   878
!
128ba2ef5505 next stage
penk
parents: 1088
diff changeset
   879
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   880
ZipRecursiveOption
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   881
    ^ $r
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   882
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   883
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   884
ZipUnzipCommand
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   885
    ^ 'unzip'
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   886
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   887
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   888
ZipUnzipExtDirectoryOption
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   889
    ^ 'd'
1086
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
!Archiver::ZipArchive class methodsFor:'queries'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   893
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   894
canAddFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   895
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   896
    ^ true
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   897
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   898
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   899
canRemoveFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   900
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   901
    ^ true
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   902
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   903
1138
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   904
canViewFile
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   905
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   906
    ^ true
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   907
!
5232eb3c94e0 canView is true for ZipArchives
Claus Gittinger <cg@exept.de>
parents: 1131
diff changeset
   908
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   909
hasLastLine
f859684fd729 next stage
penk
parents: 1087
diff changeset
   910
f859684fd729 next stage
penk
parents: 1087
diff changeset
   911
    ^ true
f859684fd729 next stage
penk
parents: 1087
diff changeset
   912
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
   913
f859684fd729 next stage
penk
parents: 1087
diff changeset
   914
hasTitleLine
f859684fd729 next stage
penk
parents: 1087
diff changeset
   915
f859684fd729 next stage
penk
parents: 1087
diff changeset
   916
    ^ true
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   917
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   918
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   919
!Archiver::ZipArchive methodsFor:'actions'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   920
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   921
addFilesToArchiv:colOfFiles
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   922
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   923
    |cmd tempDir archivFile archivInTemp|
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   924
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   925
    tempDir := self temporaryDirectory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   926
    archivFile := self fileName.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   927
    archivInTemp := tempDir construct:(archivFile baseName).
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   928
    "/ copy files to be added to tempDir
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   929
    colOfFiles do:[ :file |
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   930
        file recursiveCopyTo:(tempDir construct:(file asFilename baseName))
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   931
    ].
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   932
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   933
    "/ copy archiv to tempDir
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   934
    archivFile copyTo:archivInTemp.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   935
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   936
    "/ addFiles to the tar archive
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   937
    cmd := self getAddFilesToArchiveCommandForArchiv:archivInTemp with:colOfFiles.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   938
    self executeCommand:cmd directory:tempDir.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   939
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   940
    "/ copy tar archiv back
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   941
    archivInTemp copyTo:(self fileName).
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   942
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   943
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   944
extractTo:aDirectory 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   945
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   946
    ^ self extractTo:aDirectory with:nil
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   947
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   948
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   949
extractTo:aDirectory with:files
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   950
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   951
    |execDir cmd|
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   952
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   953
    execDir := self fileName directory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   954
    cmd := self getExtractSelectedFilesCommandForDirectory:aDirectory withSelection:files.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   955
    self executeCommand:cmd directory:execDir.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   956
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   957
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   958
extractWithOutDirectoryTo:aDirectory with:files
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   959
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   960
    |execDir tempDir tempFile targetFile|
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   961
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   962
    execDir := self fileName directory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   963
    tempDir := self temporaryDirectory.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   964
    self extractTo:tempDir with:files.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   965
    self halt.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   966
    files do:[ : aFileString |
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   967
        tempFile := self temporaryDirectory construct:aFileString.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   968
        targetFile := aDirectory construct:(aFileString asFilename baseName).
f859684fd729 next stage
penk
parents: 1087
diff changeset
   969
        targetFile exists ifTrue:[
f859684fd729 next stage
penk
parents: 1087
diff changeset
   970
            targetFile recursiveRemove.
f859684fd729 next stage
penk
parents: 1087
diff changeset
   971
        ].
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   972
        tempFile exists ifTrue:[
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   973
            tempFile recursiveCopyTo:targetFile.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   974
        ].
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
   975
    ].
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   976
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   977
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   978
listFilesFromArchiv
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   979
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   980
    self listFilesFromArchiv:nil
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   981
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   982
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   983
listFilesFromArchiv:newColOfFiles
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   984
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   985
    |dir cmd|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   986
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   987
    self fileName isNil ifTrue:[ ^ self].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   988
    dir := self fileName directory.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   989
    cmd := self getFileListFromArchivCommand:newColOfFiles.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   990
    self executeCommand:cmd directory:dir 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   991
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   992
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   993
removeFilesFromArchiv:aColOfFiles
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
   994
f859684fd729 next stage
penk
parents: 1087
diff changeset
   995
    |cmd|
f859684fd729 next stage
penk
parents: 1087
diff changeset
   996
f859684fd729 next stage
penk
parents: 1087
diff changeset
   997
    cmd := self getRemoveFilesFromArchivFor:aColOfFiles.
f859684fd729 next stage
penk
parents: 1087
diff changeset
   998
    self executeCommand:cmd directory:(self fileName directory). 
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
   999
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1000
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1001
!Archiver::ZipArchive methodsFor:'command strings'!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1002
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1003
getAddFilesToArchiveCommandForArchiv:archivFile with:aColOfFiles 
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1004
    | cmd stream|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1005
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1006
    archivFile exists ifTrue:[
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1007
        stream := WriteStream on:''.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1008
        stream nextPutAll:self class ZipArchivCommand.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1009
        stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1010
        stream nextPut:$-.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1011
        stream nextPut:self class ZipRecursiveOption.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1012
        stream space.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1013
        stream nextPutAll:archivFile asString.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1014
        aColOfFiles do:[:el | 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1015
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1016
            stream nextPutAll:(el asFilename baseName)
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1017
        ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1018
        cmd := stream contents
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1019
    ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1020
    ^ cmd
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1021
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1022
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1023
getAddFilesToTarArchiveCommand:aColOfFiles 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1024
    |filename cmd stream|
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1025
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1026
    filename := self fileName.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1027
    filename exists ifTrue:[
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1028
        stream := WriteStream on:''.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1029
        stream nextPutAll:self class TarArchivCommand.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1030
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1031
        stream nextPutAll:self class TarArchivAddOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1032
        stream nextPutAll:self class TarArchivFileOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1033
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1034
        stream nextPutAll:filename asString.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1035
        aColOfFiles do:[:el | 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1036
            stream space.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1037
            stream nextPutAll:(el baseName)
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1038
        ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1039
        cmd := stream contents
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1040
    ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1041
    ^ cmd
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1042
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1043
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1044
getAddFilesToTarArchiveCommandForArchivFor:aColOfFiles 
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1045
    | cmd stream|
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1046
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1047
    stream := WriteStream on:''.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1048
    stream nextPutAll:self class ZipArchivCommand.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1049
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1050
    stream nextPut:$-.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1051
    stream nextPut:self class ZipRecursiveOption.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1052
    stream space.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1053
    stream nextPutAll:self fileName asString.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1054
    aColOfFiles do:[:el | 
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1055
        stream space.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1056
        stream nextPutAll:(el asString)
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1057
    ].
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1058
    cmd := stream contents.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1059
    stream close.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1060
    ^ cmd
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1061
!
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1062
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1063
getExtractSelectedFilesCommandForDirectory:dir withSelection:sel 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1064
    | stream cmd|
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1065
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1066
    stream := WriteStream on:''.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1067
    stream nextPutAll:self class ZipUnzipCommand.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1068
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1069
    stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1070
    stream nextPut:self class UnzipOverwriteExistingFilesOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1071
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1072
    stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1073
    stream nextPut:self class UnzipExtDirectoryOption.
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1074
    stream space.
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1075
    stream nextPutAll:dir asString.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1076
    stream space.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1077
    stream nextPutAll:self fileName asString.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1078
    sel notNil ifTrue:[
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1079
        sel do:[:el | 
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1080
            stream space.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1081
            stream nextPutAll:(el asString)
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1082
        ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1083
    ].
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1084
    cmd := stream contents.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1085
    stream close.
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1086
    ^ cmd
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1087
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1088
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1089
getFileListFromArchivCommand:aColOfFiles 
1144
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1090
    |stream|
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1091
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1092
    stream := WriteStream on:''.
1144
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1093
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1094
    "/  -Z      ZipListOption
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1095
    "/  -h     ZipHeaderOption
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1096
    "/  -t      ZipTotalOption
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1097
    stream nextPutAll:('%1 -Z -h -t "%2"' 
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1098
                        bindWith:self class ZipUnzipCommand
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1099
                        with:self fileName asString string).
1139
aea281a4e983 zip file list
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
  1100
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1101
    aColOfFiles notNil ifTrue:[
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1102
        aColOfFiles do:[:el | 
1144
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1103
            stream nextPutAll:' "'.
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1104
            stream nextPutAll:(el baseName).
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1105
            stream nextPutAll:'"'
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1106
        ]
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1107
    ].
1144
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1108
    ^ stream contents.
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1109
!
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1110
1087
d6bfc66a3860 next stage
penk
parents: 1086
diff changeset
  1111
getRemoveFilesFromArchivFor:sel 
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1112
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1113
    |stream cmd|
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1114
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1115
    stream := WriteStream on:''.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1116
    stream nextPutAll:self class ZipArchivCommand.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1117
    stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1118
    stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1119
    stream nextPut:self class ZipDeleteOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1120
    stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1121
    stream nextPutAll:self fileName asString.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1122
    sel do:[:el | 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1123
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1124
        stream nextPutAll:(el asString)
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1125
    ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1126
    cmd := stream contents.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1127
    stream close.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1128
    ^ cmd
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1129
!
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1130
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1131
getRemoveFilesFromTarArchivFor:sel 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1132
    | stream filename|
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1133
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1134
    filename := self fileName.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1135
    filename exists ifTrue:[
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1136
        stream := WriteStream on:''.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1137
        stream nextPutAll:self class TarArchivCommand.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1138
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1139
        stream nextPutAll:self class TarArchivDeleteOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1140
        stream space.
1125
d55d69b4b93a fixed filename extraction (if name includes spaces)
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1141
        stream nextPut:$-.
1088
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1142
        stream nextPutAll:self class TarArchivFileOption.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1143
        stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1144
        stream nextPutAll:filename asString.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1145
        sel do:[:el | 
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1146
            stream space.
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1147
            stream nextPutAll:el
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1148
        ].
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1149
        ^ stream contents
f859684fd729 next stage
penk
parents: 1087
diff changeset
  1150
    ]
1086
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1151
! !
2af5aca23dba zip added
penk
parents: 1085
diff changeset
  1152
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1153
!Archiver class methodsFor:'documentation'!
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1154
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1155
version
1144
75008d5f9632 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1139
diff changeset
  1156
    ^ '$Header: /cvs/stx/stx/libbasic2/Archiver.st,v 1.12 2003-02-13 12:27:29 cg Exp $'
1085
2ff8d73d5dcf initial checkin
penk
parents:
diff changeset
  1157
! !