fxn-unmac 0.4 → 0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +3 -0
- data/bin/unmac +4 -0
- data/lib/unmacer.rb +9 -1
- data/test/test_unmac.rb +30 -1
- data/test/test_unmacer.rb +15 -0
- data/unmac.gemspec +1 -1
- metadata +1 -1
data/README
CHANGED
@@ -14,6 +14,7 @@ Options:
|
|
14
14
|
-r, --keep-dsstore Do not delete ".DS_Store" files
|
15
15
|
-d, --keep-apple-double Do not delete "._*" ghost files
|
16
16
|
-o, --keep-apple-double-orphans Delete "._foo.txt" only if "foo.txt" exists
|
17
|
+
-i, --keep-custom-folder-icons Delete custom folder icons
|
17
18
|
|
18
19
|
Description:
|
19
20
|
When a Mac copies files to volumes that have a different file system it adds
|
@@ -48,6 +49,8 @@ What's deleted:
|
|
48
49
|
* For each file "foo.txt", its resource fork and some additional stuff
|
49
50
|
are stored in an accompaining ghost file called "._foo.txt". The pattern
|
50
51
|
is to prepend "._" to the original file name.
|
52
|
+
|
53
|
+
* If a folder has a custom icon you get a file Icon^M (that's a hard CR).
|
51
54
|
|
52
55
|
Some stuff is only found in the root folder of volumes, unmac looks for them
|
53
56
|
in any directory you pass as argument, but not on their subdirectories.
|
data/bin/unmac
CHANGED
@@ -22,6 +22,7 @@ Options:
|
|
22
22
|
-r, --keep-dsstore Do not delete ".DS_Store" files
|
23
23
|
-d, --keep-apple-double Do not delete "._*" ghost files
|
24
24
|
-o, --keep-apple-double-orphans Delete "._foo.txt" only if "foo.txt" exists
|
25
|
+
-i, --keep-custom-folder-icons Delete custom folder icons
|
25
26
|
|
26
27
|
Description:
|
27
28
|
When a Mac copies files to volumes that have a different file system it adds
|
@@ -56,6 +57,8 @@ What's deleted:
|
|
56
57
|
* For each file "foo.txt", its resource fork and some additional stuff
|
57
58
|
are stored in an accompaining ghost file called "._foo.txt". The pattern
|
58
59
|
is to prepend "._" to the original file name.
|
60
|
+
|
61
|
+
* If a folder has a custom icon you get a file Icon^M (that's a hard CR).
|
59
62
|
|
60
63
|
Some stuff is only found in the root folder of volumes, unmac looks for them
|
61
64
|
in any directory you pass as argument, but not on their subdirectories.
|
@@ -73,6 +76,7 @@ opts = GetoptLong.new(
|
|
73
76
|
['--keep-dsstore', '-r', GetoptLong::NO_ARGUMENT],
|
74
77
|
['--keep-apple-double', '-d', GetoptLong::NO_ARGUMENT],
|
75
78
|
['--keep-apple-double-orphans', '-o', GetoptLong::NO_ARGUMENT],
|
79
|
+
['--keep-custom-folder-icons', '-i', GetoptLong::NO_ARGUMENT],
|
76
80
|
['--test', GetoptLong::NO_ARGUMENT]
|
77
81
|
)
|
78
82
|
|
data/lib/unmacer.rb
CHANGED
@@ -10,13 +10,15 @@ class Unmacer
|
|
10
10
|
:keep_macosx,
|
11
11
|
:keep_dsstore,
|
12
12
|
:keep_apple_double,
|
13
|
-
:keep_apple_double_orphans
|
13
|
+
:keep_apple_double_orphans,
|
14
|
+
:keep_custom_folder_icons
|
14
15
|
|
15
16
|
SPOTLIGHT = '.Spotlight-V100'
|
16
17
|
FSEVENTS = '.fseventsd'
|
17
18
|
TRASHES = '.Trashes'
|
18
19
|
MACOSX = '__MACOSX'
|
19
20
|
DSSTORE = '.DS_Store'
|
21
|
+
ICON = "Icon\cM"
|
20
22
|
|
21
23
|
def initialize
|
22
24
|
self.verbose = false
|
@@ -28,6 +30,7 @@ class Unmacer
|
|
28
30
|
self.keep_dsstore = false
|
29
31
|
self.keep_apple_double = false
|
30
32
|
self.keep_apple_double_orphans = false
|
33
|
+
self.keep_custom_folder_icons = false
|
31
34
|
end
|
32
35
|
|
33
36
|
def unmac!(dirnames)
|
@@ -65,6 +68,7 @@ private
|
|
65
68
|
delete_macosx(dirname) unless keep_macosx
|
66
69
|
delete_dsstore(dirname) unless keep_dsstore
|
67
70
|
delete_apple_double(dirname) unless keep_apple_double
|
71
|
+
delete_custom_folder_icon(dirname) unless keep_custom_folder_icons
|
68
72
|
end
|
69
73
|
|
70
74
|
def delete(parent, file_or_directory)
|
@@ -149,4 +153,8 @@ private
|
|
149
153
|
delete(dirname, basename)
|
150
154
|
end
|
151
155
|
end
|
156
|
+
|
157
|
+
def delete_custom_folder_icon(dirname)
|
158
|
+
delete(dirname, ICON)
|
159
|
+
end
|
152
160
|
end
|
data/test/test_unmac.rb
CHANGED
@@ -25,6 +25,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
25
25
|
assert !unmacer.keep_dsstore
|
26
26
|
assert !unmacer.keep_apple_double
|
27
27
|
assert !unmacer.keep_apple_double_orphans
|
28
|
+
assert !unmacer.keep_custom_folder_icons
|
28
29
|
assert_equal %w(dummy), ARGV
|
29
30
|
end
|
30
31
|
|
@@ -40,6 +41,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
40
41
|
assert !unmacer.keep_dsstore
|
41
42
|
assert !unmacer.keep_apple_double
|
42
43
|
assert !unmacer.keep_apple_double_orphans
|
44
|
+
assert !unmacer.keep_custom_folder_icons
|
43
45
|
assert_equal %w(dummy), ARGV
|
44
46
|
end
|
45
47
|
end
|
@@ -56,6 +58,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
56
58
|
assert !unmacer.keep_dsstore
|
57
59
|
assert !unmacer.keep_apple_double
|
58
60
|
assert !unmacer.keep_apple_double_orphans
|
61
|
+
assert !unmacer.keep_custom_folder_icons
|
59
62
|
assert_equal %w(dummy), ARGV
|
60
63
|
end
|
61
64
|
end
|
@@ -72,6 +75,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
72
75
|
assert !unmacer.keep_dsstore
|
73
76
|
assert !unmacer.keep_apple_double
|
74
77
|
assert !unmacer.keep_apple_double_orphans
|
78
|
+
assert !unmacer.keep_custom_folder_icons
|
75
79
|
assert_equal %w(dummy), ARGV
|
76
80
|
end
|
77
81
|
end
|
@@ -88,6 +92,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
88
92
|
assert !unmacer.keep_dsstore
|
89
93
|
assert !unmacer.keep_apple_double
|
90
94
|
assert !unmacer.keep_apple_double_orphans
|
95
|
+
assert !unmacer.keep_custom_folder_icons
|
91
96
|
assert_equal %w(dummy), ARGV
|
92
97
|
end
|
93
98
|
end
|
@@ -104,6 +109,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
104
109
|
assert !unmacer.keep_dsstore
|
105
110
|
assert !unmacer.keep_apple_double
|
106
111
|
assert !unmacer.keep_apple_double_orphans
|
112
|
+
assert !unmacer.keep_custom_folder_icons
|
107
113
|
assert_equal %w(dummy), ARGV
|
108
114
|
end
|
109
115
|
end
|
@@ -120,6 +126,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
120
126
|
assert !unmacer.keep_dsstore
|
121
127
|
assert !unmacer.keep_apple_double
|
122
128
|
assert !unmacer.keep_apple_double_orphans
|
129
|
+
assert !unmacer.keep_custom_folder_icons
|
123
130
|
assert_equal %w(dummy), ARGV
|
124
131
|
end
|
125
132
|
end
|
@@ -136,6 +143,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
136
143
|
assert unmacer.keep_dsstore
|
137
144
|
assert !unmacer.keep_apple_double
|
138
145
|
assert !unmacer.keep_apple_double_orphans
|
146
|
+
assert !unmacer.keep_custom_folder_icons
|
139
147
|
assert_equal %w(dummy), ARGV
|
140
148
|
end
|
141
149
|
end
|
@@ -152,6 +160,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
152
160
|
assert !unmacer.keep_dsstore
|
153
161
|
assert unmacer.keep_apple_double
|
154
162
|
assert !unmacer.keep_apple_double_orphans
|
163
|
+
assert !unmacer.keep_custom_folder_icons
|
155
164
|
assert_equal %w(dummy), ARGV
|
156
165
|
end
|
157
166
|
end
|
@@ -168,12 +177,30 @@ class TestUnmac < Test::Unit::TestCase
|
|
168
177
|
assert !unmacer.keep_dsstore
|
169
178
|
assert !unmacer.keep_apple_double
|
170
179
|
assert unmacer.keep_apple_double_orphans
|
180
|
+
assert !unmacer.keep_custom_folder_icons
|
181
|
+
assert_equal %w(dummy), ARGV
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_custom_folder_icons
|
186
|
+
for opt in ['--keep-custom-folder-icons', '-i']
|
187
|
+
unmacer = call_unmac(opt, 'dummy')
|
188
|
+
assert !unmacer.verbose
|
189
|
+
assert !unmacer.pretend
|
190
|
+
assert !unmacer.keep_spotlight
|
191
|
+
assert !unmacer.keep_fsevents
|
192
|
+
assert !unmacer.keep_trashes
|
193
|
+
assert !unmacer.keep_macosx
|
194
|
+
assert !unmacer.keep_dsstore
|
195
|
+
assert !unmacer.keep_apple_double
|
196
|
+
assert !unmacer.keep_apple_double_orphans
|
197
|
+
assert unmacer.keep_custom_folder_icons
|
171
198
|
assert_equal %w(dummy), ARGV
|
172
199
|
end
|
173
200
|
end
|
174
201
|
|
175
202
|
def test_mix_1
|
176
|
-
unmacer = call_unmac(*%w(-v -f -m -d dummy))
|
203
|
+
unmacer = call_unmac(*%w(-v -f -m -d -i dummy))
|
177
204
|
assert unmacer.verbose
|
178
205
|
assert !unmacer.pretend
|
179
206
|
assert !unmacer.keep_spotlight
|
@@ -183,6 +210,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
183
210
|
assert !unmacer.keep_dsstore
|
184
211
|
assert unmacer.keep_apple_double
|
185
212
|
assert !unmacer.keep_apple_double_orphans
|
213
|
+
assert unmacer.keep_custom_folder_icons
|
186
214
|
assert_equal %w(dummy), ARGV
|
187
215
|
end
|
188
216
|
|
@@ -197,6 +225,7 @@ class TestUnmac < Test::Unit::TestCase
|
|
197
225
|
assert unmacer.keep_dsstore
|
198
226
|
assert !unmacer.keep_apple_double
|
199
227
|
assert unmacer.keep_apple_double_orphans
|
228
|
+
assert !unmacer.keep_custom_folder_icons
|
200
229
|
assert_equal %w(dummy), ARGV
|
201
230
|
end
|
202
231
|
|
data/test/test_unmacer.rb
CHANGED
@@ -190,6 +190,19 @@ class TestUnmacer < Test::Unit::TestCase
|
|
190
190
|
assert_equal %w(._foo.txt), read_struct
|
191
191
|
end
|
192
192
|
|
193
|
+
def test_custom_folder_icons
|
194
|
+
create_struct([], Unmacer::ICON)
|
195
|
+
unmac!
|
196
|
+
assert read_struct.empty?
|
197
|
+
end
|
198
|
+
|
199
|
+
def test_keep_custom_folder_icons
|
200
|
+
create_struct([], Unmacer::ICON)
|
201
|
+
@unmacer.keep_custom_folder_icons = true
|
202
|
+
unmac!
|
203
|
+
assert_equal [Unmacer::ICON], read_struct
|
204
|
+
end
|
205
|
+
|
193
206
|
def test_a_handful_of_files
|
194
207
|
dummy = 'dummy'
|
195
208
|
dummy2 = File.join(dummy, 'dummy2')
|
@@ -208,6 +221,8 @@ class TestUnmacer < Test::Unit::TestCase
|
|
208
221
|
File.join(dummy2, Unmacer::DSSTORE),
|
209
222
|
File.join(dummy, Unmacer::MACOSX),
|
210
223
|
File.join(dummy2, Unmacer::MACOSX),
|
224
|
+
File.join(dummy, Unmacer::ICON),
|
225
|
+
File.join(dummy2, Unmacer::ICON),
|
211
226
|
'foo.txt',
|
212
227
|
'._foo.txt',
|
213
228
|
ghost,
|
data/unmac.gemspec
CHANGED