1 "{ Package: 'stx:libbasic2' }" |
1 "{ Package: 'stx:libbasic2' }" |
2 |
2 |
3 Object subclass:#Archiver |
3 Object subclass:#Archiver |
4 instanceVariableNames:'process temporaryDirectory fileName outStream errorStream |
4 instanceVariableNames:'process temporaryDirectory fileName outStream errorStream |
5 synchron' |
5 synchron' |
6 classVariableNames:'' |
6 classVariableNames:'' |
7 poolDictionaries:'' |
7 poolDictionaries:'' |
8 category:'System-Support-FileFormats' |
8 category:'System-Support-FileFormats' |
9 ! |
9 ! |
10 |
10 |
11 Archiver subclass:#GZipArchive |
11 Archiver subclass:#GZipArchive |
12 instanceVariableNames:'' |
12 instanceVariableNames:'' |
13 classVariableNames:'' |
13 classVariableNames:'' |
14 poolDictionaries:'' |
14 poolDictionaries:'' |
15 privateIn:Archiver |
15 privateIn:Archiver |
16 ! |
16 ! |
17 |
17 |
18 Archiver subclass:#TarArchive |
18 Archiver subclass:#TarArchive |
19 instanceVariableNames:'' |
19 instanceVariableNames:'' |
20 classVariableNames:'' |
20 classVariableNames:'' |
21 poolDictionaries:'' |
21 poolDictionaries:'' |
22 privateIn:Archiver |
22 privateIn:Archiver |
23 ! |
23 ! |
24 |
24 |
25 Archiver subclass:#TarGZipArchive |
25 Archiver subclass:#TarGZipArchive |
26 instanceVariableNames:'tarArchiver tarFile' |
26 instanceVariableNames:'tarArchiver tarFile' |
27 classVariableNames:'' |
27 classVariableNames:'' |
28 poolDictionaries:'' |
28 poolDictionaries:'' |
29 privateIn:Archiver |
29 privateIn:Archiver |
30 ! |
30 ! |
31 |
31 |
32 Archiver subclass:#ZipArchive |
32 Archiver subclass:#ZipArchive |
33 instanceVariableNames:'' |
33 instanceVariableNames:'' |
34 classVariableNames:'' |
34 classVariableNames:'' |
35 poolDictionaries:'' |
35 poolDictionaries:'' |
36 privateIn:Archiver |
36 privateIn:Archiver |
37 ! |
37 ! |
38 |
38 |
39 |
39 |
40 !Archiver class methodsFor:'instance creation'! |
40 !Archiver class methodsFor:'instance creation'! |
41 |
41 |
540 tempDir := self temporaryDirectory. |
540 tempDir := self temporaryDirectory. |
541 archivFile := self fileName. |
541 archivFile := self fileName. |
542 archivInTemp := tempDir construct:(archivFile baseName). |
542 archivInTemp := tempDir construct:(archivFile baseName). |
543 "/ copy files to be added to tempDir |
543 "/ copy files to be added to tempDir |
544 colOfFiles do:[ :file | |
544 colOfFiles do:[ :file | |
545 file recursiveCopyTo:(tempDir construct:(file baseName)) |
545 file recursiveCopyTo:(tempDir construct:(file asFilename baseName)) |
546 ]. |
546 ]. |
547 |
547 |
548 "/ copy tar archiv to tempDir |
548 "/ copy tar archiv to tempDir |
549 archivFile copyTo:archivInTemp. |
549 archivFile copyTo:archivInTemp. |
550 |
550 |
621 stream nextPutAll:self class TarArchivFileOption. |
621 stream nextPutAll:self class TarArchivFileOption. |
622 stream space. |
622 stream space. |
623 stream nextPutAll:archivFile asString. |
623 stream nextPutAll:archivFile asString. |
624 aColOfFiles do:[:el | |
624 aColOfFiles do:[:el | |
625 stream space. |
625 stream space. |
626 stream nextPutAll:(el baseName) |
626 stream nextPutAll:(el asFilename baseName) |
627 ]. |
627 ]. |
628 cmd := stream contents |
628 cmd := stream contents |
629 ]. |
629 ]. |
630 ^ cmd |
630 ^ cmd |
631 ! |
631 ! |
733 file := file baseName. |
733 file := file baseName. |
734 suffix = 'tgz' ifTrue:[ |
734 suffix = 'tgz' ifTrue:[ |
735 file := file , '.tar' |
735 file := file , '.tar' |
736 ]. |
736 ]. |
737 tarFile := self temporaryDirectory construct:file. |
737 tarFile := self temporaryDirectory construct:file. |
738 tarArchiver := TarArchive with:tarFile. |
738 tarArchiver := Archiver tarArchive with:tarFile. |
739 ! ! |
739 ! ! |
740 |
740 |
741 !Archiver::TarGZipArchive methodsFor:'actions'! |
741 !Archiver::TarGZipArchive methodsFor:'actions'! |
742 |
742 |
743 addFilesToArchiv:colOfFiles |
743 addFilesToArchiv:colOfFiles |
877 tempDir := self temporaryDirectory. |
903 tempDir := self temporaryDirectory. |
878 archivFile := self fileName. |
904 archivFile := self fileName. |
879 archivInTemp := tempDir construct:(archivFile baseName). |
905 archivInTemp := tempDir construct:(archivFile baseName). |
880 "/ copy files to be added to tempDir |
906 "/ copy files to be added to tempDir |
881 colOfFiles do:[ :file | |
907 colOfFiles do:[ :file | |
882 file recursiveCopyTo:(tempDir construct:(file baseName)) |
908 file recursiveCopyTo:(tempDir construct:(file asFilename baseName)) |
883 ]. |
909 ]. |
884 |
910 |
885 "/ copy archiv to tempDir |
911 "/ copy archiv to tempDir |
886 archivFile copyTo:archivInTemp. |
912 archivFile copyTo:archivInTemp. |
887 |
913 |
888 "/ addFiles to the tar archive |
914 "/ addFiles to the tar archive |
889 cmd := self getAddFilesToArchiveCommandForArchiv:archivInTemp with:colOfFiles. |
915 cmd := self getAddFilesToArchiveCommandForArchiv:archivInTemp with:colOfFiles. |
890 self executeCommand:cmd directory:(self fileName directory). |
916 self executeCommand:cmd directory:tempDir. |
891 |
917 |
892 "/ copy tar archiv back |
918 "/ copy tar archiv back |
893 archivInTemp copyTo:(self fileName). |
919 archivInTemp copyTo:(self fileName). |
894 ! |
920 ! |
895 |
921 |
902 |
928 |
903 |execDir cmd| |
929 |execDir cmd| |
904 |
930 |
905 execDir := self fileName directory. |
931 execDir := self fileName directory. |
906 cmd := self getExtractSelectedFilesCommandForDirectory:aDirectory withSelection:files. |
932 cmd := self getExtractSelectedFilesCommandForDirectory:aDirectory withSelection:files. |
907 self halt. |
|
908 self executeCommand:cmd directory:execDir. |
933 self executeCommand:cmd directory:execDir. |
909 ! |
934 ! |
910 |
935 |
911 extractWithOutDirectoryTo:aDirectory with:files |
936 extractWithOutDirectoryTo:aDirectory with:files |
912 |
937 |
913 |execDir tempDir tempFile| |
938 |execDir tempDir tempFile targetFile| |
914 |
939 |
915 execDir := self fileName directory. |
940 execDir := self fileName directory. |
916 tempDir := self temporaryDirectory. |
941 tempDir := self temporaryDirectory. |
917 self extractTo:tempDir with:files. |
942 self extractTo:tempDir with:files. |
|
943 self halt. |
918 files do:[ : aFileString | |
944 files do:[ : aFileString | |
919 tempFile := self temporaryDirectory construct:aFileString. |
945 tempFile := self temporaryDirectory construct:aFileString. |
|
946 targetFile := aDirectory construct:(aFileString asFilename baseName). |
|
947 targetFile exists ifTrue:[ |
|
948 targetFile recursiveRemove. |
|
949 ]. |
920 tempFile exists ifTrue:[ |
950 tempFile exists ifTrue:[ |
921 tempFile recursiveCopyTo:(aDirectory construct:(aFileString fileName asFilename baseName)). |
951 tempFile recursiveCopyTo:targetFile. |
922 ]. |
952 ]. |
923 ]. |
953 ]. |
924 ! |
954 ! |
925 |
955 |
926 listFilesFromArchiv |
956 listFilesFromArchiv |
937 cmd := self getFileListFromArchivCommand:newColOfFiles. |
967 cmd := self getFileListFromArchivCommand:newColOfFiles. |
938 self executeCommand:cmd directory:dir |
968 self executeCommand:cmd directory:dir |
939 ! |
969 ! |
940 |
970 |
941 removeFilesFromArchiv:aColOfFiles |
971 removeFilesFromArchiv:aColOfFiles |
|
972 |
|
973 |cmd| |
|
974 |
|
975 cmd := self getRemoveFilesFromArchivFor:aColOfFiles. |
|
976 self executeCommand:cmd directory:(self fileName directory). |
942 ! ! |
977 ! ! |
943 |
978 |
944 !Archiver::ZipArchive methodsFor:'command strings'! |
979 !Archiver::ZipArchive methodsFor:'command strings'! |
945 |
980 |
946 getAddFilesToArchiveCommandForArchiv:archivFile with:aColOfFiles |
981 getAddFilesToArchiveCommandForArchiv:archivFile with:aColOfFiles |
952 stream space. |
987 stream space. |
953 stream nextPut:self class MinusSign. |
988 stream nextPut:self class MinusSign. |
954 stream nextPut:self class ZipRecursiveOption. |
989 stream nextPut:self class ZipRecursiveOption. |
955 stream space. |
990 stream space. |
956 stream nextPutAll:archivFile asString. |
991 stream nextPutAll:archivFile asString. |
|
992 aColOfFiles do:[:el | |
|
993 stream space. |
|
994 stream nextPutAll:(el asFilename baseName) |
|
995 ]. |
|
996 cmd := stream contents |
|
997 ]. |
|
998 ^ cmd |
|
999 ! |
|
1000 |
|
1001 getAddFilesToTarArchiveCommand:aColOfFiles |
|
1002 |filename cmd stream| |
|
1003 |
|
1004 filename := self fileName. |
|
1005 filename exists ifTrue:[ |
|
1006 stream := WriteStream on:''. |
|
1007 stream nextPutAll:self class TarArchivCommand. |
|
1008 stream space. |
|
1009 stream nextPutAll:self class TarArchivAddOption. |
|
1010 stream nextPutAll:self class TarArchivFileOption. |
|
1011 stream space. |
|
1012 stream nextPutAll:filename asString. |
957 aColOfFiles do:[:el | |
1013 aColOfFiles do:[:el | |
958 stream space. |
1014 stream space. |
959 stream nextPutAll:(el baseName) |
1015 stream nextPutAll:(el baseName) |
960 ]. |
1016 ]. |
961 cmd := stream contents |
1017 cmd := stream contents |
987 |
1043 |
988 stream := WriteStream on:''. |
1044 stream := WriteStream on:''. |
989 stream nextPutAll:self class ZipUnzipCommand. |
1045 stream nextPutAll:self class ZipUnzipCommand. |
990 stream space. |
1046 stream space. |
991 stream nextPut:self class MinusSign. |
1047 stream nextPut:self class MinusSign. |
992 stream nextPutAll:self class ZipUnzipExtDirectoryOption. |
1048 stream nextPut:self class UnzipOverwriteExistingFilesOption. |
|
1049 stream space. |
|
1050 stream nextPut:self class MinusSign. |
|
1051 stream nextPut:self class UnzipExtDirectoryOption. |
993 stream space. |
1052 stream space. |
994 stream nextPutAll:dir asString. |
1053 stream nextPutAll:dir asString. |
995 stream space. |
1054 stream space. |
996 stream nextPutAll:self fileName asString. |
1055 stream nextPutAll:self fileName asString. |
997 sel notNil ifTrue:[ |
1056 sel notNil ifTrue:[ |
998 sel do:[:el | |
1057 sel do:[:el | |
999 stream space. |
1058 stream space. |
1000 stream nextPutAll:(el fileName asString) |
1059 stream nextPutAll:(el asString) |
1001 ]. |
1060 ]. |
1002 ]. |
1061 ]. |
1003 cmd := stream contents. |
1062 cmd := stream contents. |
1004 stream close. |
1063 stream close. |
1005 ^ cmd |
1064 ^ cmd |
1032 stream close. |
1091 stream close. |
1033 ^ cmd |
1092 ^ cmd |
1034 ! |
1093 ! |
1035 |
1094 |
1036 getRemoveFilesFromArchivFor:sel |
1095 getRemoveFilesFromArchivFor:sel |
|
1096 |
|
1097 |stream cmd| |
|
1098 |
|
1099 stream := WriteStream on:''. |
|
1100 stream nextPutAll:self class ZipArchivCommand. |
|
1101 stream space. |
|
1102 stream nextPut:self class MinusSign. |
|
1103 stream nextPut:self class ZipDeleteOption. |
|
1104 stream space. |
|
1105 stream nextPutAll:self fileName asString. |
|
1106 sel do:[:el | |
|
1107 stream space. |
|
1108 stream nextPutAll:(el asString) |
|
1109 ]. |
|
1110 cmd := stream contents. |
|
1111 stream close. |
|
1112 ^ cmd |
|
1113 ! |
|
1114 |
|
1115 getRemoveFilesFromTarArchivFor:sel |
|
1116 | stream filename| |
|
1117 |
|
1118 filename := self fileName. |
|
1119 filename exists ifTrue:[ |
|
1120 stream := WriteStream on:''. |
|
1121 stream nextPutAll:self class TarArchivCommand. |
|
1122 stream space. |
|
1123 stream nextPutAll:self class TarArchivDeleteOption. |
|
1124 stream space. |
|
1125 stream nextPut:self class MinusSign. |
|
1126 stream nextPutAll:self class TarArchivFileOption. |
|
1127 stream space. |
|
1128 stream nextPutAll:filename asString. |
|
1129 sel do:[:el | |
|
1130 stream space. |
|
1131 stream nextPutAll:el |
|
1132 ]. |
|
1133 ^ stream contents |
|
1134 ] |
1037 ! ! |
1135 ! ! |
1038 |
1136 |
1039 !Archiver class methodsFor:'documentation'! |
1137 !Archiver class methodsFor:'documentation'! |
1040 |
1138 |
1041 version |
1139 version |
1042 ^ '$Header: /cvs/stx/stx/libbasic2/Archiver.st,v 1.3 2002-09-06 16:30:38 penk Exp $' |
1140 ^ '$Header: /cvs/stx/stx/libbasic2/Archiver.st,v 1.4 2002-09-09 13:31:11 penk Exp $' |
1043 ! ! |
1141 ! ! |