zip added
authorpenk
Fri, 06 Sep 2002 15:49:51 +0200
changeset 1086 2af5aca23dba
parent 1085 2ff8d73d5dcf
child 1087 d6bfc66a3860
zip added
Archiver.st
--- 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 $'
 ! !