# HG changeset patch # User penk # Date 1031320191 -7200 # Node ID 2af5aca23dbaee4c5168a37132010a5d32ce4ffe # Parent 2ff8d73d5dcfec17a5de76e3482b2ce4c26ad118 zip added diff -r 2ff8d73d5dcf -r 2af5aca23dba 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 $' ! !