--- a/Archiver.st Thu Sep 05 17:35:23 2002 +0200
+++ b/Archiver.st Fri Sep 06 15:49:51 2002 +0200
@@ -16,7 +16,7 @@
!
Archiver subclass:#TarArchive
- instanceVariableNames:'fileName'
+ instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
privateIn:Archiver
@@ -29,6 +29,13 @@
privateIn:Archiver
!
+Archiver subclass:#ZipArchive
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Archiver
+!
+
!Archiver class methodsFor:'instance creation'!
@@ -56,6 +63,11 @@
tarGZipArchive
^ TarGZipArchive
+!
+
+zipArchive
+
+ ^ ZipArchive
! !
!Archiver class methodsFor:'common options'!
@@ -70,6 +82,28 @@
^ $>
! !
+!Archiver class methodsFor:'queries'!
+
+canAddFiles
+
+ ^ false
+!
+
+canRemoveFiles
+
+ ^ false
+!
+
+hasLastLine
+
+ ^ false
+!
+
+hasTitleLine
+
+ ^ false
+! !
+
!Archiver methodsFor:'accessing'!
errorStream
@@ -243,6 +277,29 @@
self removeTemporaryDirectory.
! !
+!Archiver::GZipArchive class methodsFor:'columns'!
+
+columns
+
+ "/ columns in stream order
+ "/ colums id words to read
+ ^ #( #(#method 1)
+ #(#crc 1)
+ #(#dateAndTime 3)
+ #(#compressSize 1)
+ #(#size 1)
+ #(#ratio 1)
+ #(#fileName 1)
+ )
+! !
+
+!Archiver::GZipArchive class methodsFor:'queries'!
+
+hasTitleLine
+
+ ^ true
+! !
+
!Archiver::GZipArchive class methodsFor:'zip archiv command options'!
GZipArchivFileOption
@@ -259,10 +316,37 @@
GZipArchivZipCommand
^ 'gzip'
+!
+
+GZipArchivZipListOption
+ ^ $l
+!
+
+GZipArchivZipQuietOption
+ ^ $q
+!
+
+GZipArchivZipVerboseOption
+ ^ $v
! !
!Archiver::GZipArchive methodsFor:'actions'!
+listFilesFromArchiv
+
+ | cmd dir|
+
+ self fileName isNil ifTrue:[ ^ self].
+ dir := self fileName directory.
+ cmd := self getFileListFromArchivCommand.
+ self executeCommand:cmd directory:dir
+!
+
+listFilesFromArchiv:aCol
+
+ self listFilesFromArchiv
+!
+
unzipTo:aDirectory
| cmd file newFile|
@@ -302,6 +386,25 @@
!Archiver::GZipArchive methodsFor:'command strings'!
+getFileListFromArchivCommand
+
+ | stream cmd|
+
+ stream := WriteStream on:''.
+ stream nextPutAll:self class GZipArchivZipCommand.
+ stream space.
+ stream nextPut:self class MinusSign.
+ stream nextPut:self class GZipArchivZipListOption.
+ stream space.
+ stream nextPut:self class MinusSign.
+ stream nextPut:self class GZipArchivZipVerboseOption.
+ stream space.
+ stream nextPutAll:self fileName baseName.
+ cmd := stream contents.
+ stream close.
+ ^ cmd
+!
+
getUnzipCommand
| stream cmd|
@@ -360,6 +463,19 @@
^ cmd
! !
+!Archiver::TarArchive class methodsFor:'columns'!
+
+columns
+
+ "/ colums id words to read
+ ^ #( #(#permissions 1)
+ #(#ownerGroup 1)
+ #(#size 1)
+ #(#dateAndTime 2)
+ #(#fileName 1)
+ )
+! !
+
!Archiver::TarArchive class methodsFor:'command strings'!
TarArchivAddOption
@@ -408,6 +524,18 @@
^ 'z'
! !
+!Archiver::TarArchive class methodsFor:'queries'!
+
+canAddFiles
+
+ ^ true
+!
+
+canRemoveFiles
+
+ ^ true
+! !
+
!Archiver::TarArchive methodsFor:'actions'!
addFilesToArchiv:colOfFiles
@@ -596,6 +724,25 @@
]
! !
+!Archiver::TarGZipArchive class methodsFor:'columns'!
+
+columns
+
+ ^ Archiver tarArchive columns
+! !
+
+!Archiver::TarGZipArchive class methodsFor:'queries'!
+
+canAddFiles
+
+ ^ Archiver tarArchive canAddFiles
+!
+
+canRemoveFiles
+
+ ^ Archiver tarArchive canRemoveFiles
+! !
+
!Archiver::TarGZipArchive methodsFor:'accessing'!
fileName:aFile
@@ -686,8 +833,209 @@
tarArchiver release.
! !
+!Archiver::ZipArchive class methodsFor:'columns'!
+
+columns
+
+ "/ colums id words to read
+ ^ #( #(#permissions 1)
+ #(#version 2)
+ #(#size 1)
+ #(#type 1)
+ #(#ratio 1)
+ #(#dateAndTime 2)
+ #(#fileName 1)
+ )
+! !
+
+!Archiver::ZipArchive class methodsFor:'command strings'!
+
+ZipArchivCommand
+ ^ 'zip'
+!
+
+ZipListCommand
+ ^ 'unzip'
+!
+
+ZipListOption
+ ^ 'Z'
+!
+
+ZipUnzipCommand
+ ^ 'unzip'
+! !
+
+!Archiver::ZipArchive class methodsFor:'queries'!
+
+canAddFiles
+
+ ^ true
+!
+
+canRemoveFiles
+
+ ^ true
+!
+
+hasLastLine
+
+ ^ true
+!
+
+hasTitleLine
+
+ ^ true
+! !
+
+!Archiver::ZipArchive methodsFor:'actions'!
+
+addFilesToArchiv:colOfFiles
+!
+
+extractTo:aDirectory
+
+ ^ self extractTo:aDirectory with:nil
+!
+
+extractTo:aDirectory with:files
+!
+
+extractWithOutDirectoryTo:aDirectory with:files
+!
+
+listFilesFromArchiv
+
+ self listFilesFromArchiv:nil
+!
+
+listFilesFromArchiv:newColOfFiles
+
+ |dir cmd|
+
+ self fileName isNil ifTrue:[ ^ self].
+ dir := self fileName directory.
+ cmd := self getFileListFromArchivCommand:newColOfFiles.
+ self executeCommand:cmd directory:dir
+!
+
+removeFilesFromArchiv:aColOfFiles
+! !
+
+!Archiver::ZipArchive methodsFor:'command strings'!
+
+getAddFilesToTarArchiveCommand:aColOfFiles
+ |filename cmd stream|
+
+ filename := self fileName.
+ filename exists ifTrue:[
+ stream := WriteStream on:''.
+ stream nextPutAll:self class TarArchivCommand.
+ stream space.
+ stream nextPutAll:self class TarArchivAddOption.
+ stream nextPutAll:self class TarArchivFileOption.
+ stream space.
+ stream nextPutAll:filename asString.
+ aColOfFiles do:[:el |
+ stream space.
+ stream nextPutAll:(el asString)
+ ].
+ cmd := stream contents
+ ].
+ ^ cmd
+!
+
+getAddFilesToTarArchiveCommandForArchiv:archivFile with:aColOfFiles
+ | cmd stream|
+
+ archivFile exists ifTrue:[
+ stream := WriteStream on:''.
+ stream nextPutAll:self class TarArchivCommand.
+ stream space.
+ stream nextPutAll:self class TarArchivAddOption.
+ stream nextPutAll:self class TarArchivFileOption.
+ stream space.
+ stream nextPutAll:archivFile asString.
+ aColOfFiles do:[:el |
+ stream space.
+ stream nextPutAll:(el baseName)
+ ].
+ cmd := stream contents
+ ].
+ ^ cmd
+!
+
+getExtractSelectedFilesCommandForDirectory:dir withSelection:sel
+ | stream cmd|
+
+ stream := WriteStream on:''.
+ stream nextPutAll:self class TarArchivCommand.
+ stream space.
+ stream nextPutAll:self class TarArchivUnpackOption.
+ stream nextPutAll:self class TarArchivFileOption.
+ stream space.
+ stream nextPutAll:self fileName asString.
+ stream space.
+ stream nextPutAll:self class TarArchivUnpackInDirectoryOption.
+ stream space.
+ stream nextPutAll:dir asString.
+ sel notNil ifTrue:[
+ sel do:[:el |
+ stream space.
+ stream nextPutAll:(el fileName asString)
+ ].
+ ].
+ cmd := stream contents.
+ stream close.
+ ^ cmd
+!
+
+getFileListFromArchivCommand:aColOfFiles
+
+ | stream cmd|
+
+ stream := WriteStream on:''.
+ stream nextPutAll:self class ZipUnzipCommand.
+ stream space.
+ stream nextPut:self class MinusSign.
+ stream nextPutAll:self class ZipListOption.
+ stream space.
+ stream nextPutAll:self fileName baseName.
+ aColOfFiles notNil ifTrue:[
+ aColOfFiles do:[:el |
+ stream space.
+ stream nextPutAll:(el baseName)
+ ]
+ ].
+ cmd := stream contents.
+ stream close.
+ ^ cmd
+!
+
+getRemoveFilesFromTarArchivFor:sel
+ | stream filename|
+
+ filename := self fileName.
+ filename exists ifTrue:[
+ stream := WriteStream on:''.
+ stream nextPutAll:self class TarArchivCommand.
+ stream space.
+ stream nextPutAll:self class TarArchivDeleteOption.
+ stream space.
+ stream nextPut:self class MinusSign.
+ stream nextPutAll:self class TarArchivFileOption.
+ stream space.
+ stream nextPutAll:filename asString.
+ sel do:[:el |
+ stream space.
+ stream nextPutAll:el
+ ].
+ ^ stream contents
+ ]
+! !
+
!Archiver class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic2/Archiver.st,v 1.1 2002-09-05 15:35:23 penk Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic2/Archiver.st,v 1.2 2002-09-06 13:49:51 penk Exp $'
! !