| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | require "os/mac/version" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module OS | 
					
						
							|  |  |  |   module Mac | 
					
						
							| 
									
										
										
										
											2016-09-24 20:11:54 +02:00
										 |  |  |     module_function | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     SYSTEM_DIRS = [ | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "/", | 
					
						
							|  |  |  |       "/Applications", | 
					
						
							|  |  |  |       "/Applications/Utilities", | 
					
						
							|  |  |  |       "/Incompatible Software", | 
					
						
							|  |  |  |       "/Library", | 
					
						
							|  |  |  |       "/Library/Application Support", | 
					
						
							|  |  |  |       "/Library/Audio", | 
					
						
							|  |  |  |       "/Library/Caches", | 
					
						
							|  |  |  |       "/Library/ColorPickers", | 
					
						
							|  |  |  |       "/Library/ColorSync", | 
					
						
							|  |  |  |       "/Library/Components", | 
					
						
							|  |  |  |       "/Library/Compositions", | 
					
						
							|  |  |  |       "/Library/Contextual Menu Items", | 
					
						
							|  |  |  |       "/Library/CoreMediaIO", | 
					
						
							|  |  |  |       "/Library/Desktop Pictures", | 
					
						
							|  |  |  |       "/Library/Developer", | 
					
						
							|  |  |  |       "/Library/Dictionaries", | 
					
						
							|  |  |  |       "/Library/DirectoryServices", | 
					
						
							|  |  |  |       "/Library/Documentation", | 
					
						
							|  |  |  |       "/Library/Extensions", | 
					
						
							|  |  |  |       "/Library/Filesystems", | 
					
						
							|  |  |  |       "/Library/Fonts", | 
					
						
							|  |  |  |       "/Library/Frameworks", | 
					
						
							|  |  |  |       "/Library/Graphics", | 
					
						
							|  |  |  |       "/Library/Image Capture", | 
					
						
							|  |  |  |       "/Library/Input Methods", | 
					
						
							|  |  |  |       "/Library/Internet Plug-Ins", | 
					
						
							|  |  |  |       "/Library/Java", | 
					
						
							| 
									
										
										
										
											2019-11-03 19:26:26 +01:00
										 |  |  |       "/Library/Java/Extensions", | 
					
						
							|  |  |  |       "/Library/Java/JavaVirtualMachines", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "/Library/Keyboard Layouts", | 
					
						
							|  |  |  |       "/Library/Keychains", | 
					
						
							|  |  |  |       "/Library/LaunchAgents", | 
					
						
							|  |  |  |       "/Library/LaunchDaemons", | 
					
						
							|  |  |  |       "/Library/Logs", | 
					
						
							|  |  |  |       "/Library/Messages", | 
					
						
							|  |  |  |       "/Library/Modem Scripts", | 
					
						
							|  |  |  |       "/Library/OpenDirectory", | 
					
						
							|  |  |  |       "/Library/PDF Services", | 
					
						
							|  |  |  |       "/Library/Perl", | 
					
						
							|  |  |  |       "/Library/PreferencePanes", | 
					
						
							|  |  |  |       "/Library/Preferences", | 
					
						
							|  |  |  |       "/Library/Printers", | 
					
						
							|  |  |  |       "/Library/PrivilegedHelperTools", | 
					
						
							|  |  |  |       "/Library/Python", | 
					
						
							|  |  |  |       "/Library/QuickLook", | 
					
						
							|  |  |  |       "/Library/QuickTime", | 
					
						
							|  |  |  |       "/Library/Receipts", | 
					
						
							|  |  |  |       "/Library/Ruby", | 
					
						
							|  |  |  |       "/Library/Sandbox", | 
					
						
							|  |  |  |       "/Library/Screen Savers", | 
					
						
							|  |  |  |       "/Library/ScriptingAdditions", | 
					
						
							|  |  |  |       "/Library/Scripts", | 
					
						
							|  |  |  |       "/Library/Security", | 
					
						
							|  |  |  |       "/Library/Speech", | 
					
						
							|  |  |  |       "/Library/Spelling", | 
					
						
							|  |  |  |       "/Library/Spotlight", | 
					
						
							|  |  |  |       "/Library/StartupItems", | 
					
						
							|  |  |  |       "/Library/SystemProfiler", | 
					
						
							|  |  |  |       "/Library/Updates", | 
					
						
							|  |  |  |       "/Library/User Pictures", | 
					
						
							|  |  |  |       "/Library/Video", | 
					
						
							|  |  |  |       "/Library/WebServer", | 
					
						
							|  |  |  |       "/Library/Widgets", | 
					
						
							|  |  |  |       "/Library/iTunes", | 
					
						
							|  |  |  |       "/Network", | 
					
						
							|  |  |  |       "/System", | 
					
						
							|  |  |  |       "/System/Library", | 
					
						
							|  |  |  |       "/System/Library/Accessibility", | 
					
						
							|  |  |  |       "/System/Library/Accounts", | 
					
						
							|  |  |  |       "/System/Library/Address Book Plug-Ins", | 
					
						
							|  |  |  |       "/System/Library/Assistant", | 
					
						
							|  |  |  |       "/System/Library/Automator", | 
					
						
							|  |  |  |       "/System/Library/BridgeSupport", | 
					
						
							|  |  |  |       "/System/Library/Caches", | 
					
						
							|  |  |  |       "/System/Library/ColorPickers", | 
					
						
							|  |  |  |       "/System/Library/ColorSync", | 
					
						
							|  |  |  |       "/System/Library/Colors", | 
					
						
							|  |  |  |       "/System/Library/Components", | 
					
						
							|  |  |  |       "/System/Library/Compositions", | 
					
						
							|  |  |  |       "/System/Library/CoreServices", | 
					
						
							|  |  |  |       "/System/Library/DTDs", | 
					
						
							|  |  |  |       "/System/Library/DirectoryServices", | 
					
						
							|  |  |  |       "/System/Library/Displays", | 
					
						
							|  |  |  |       "/System/Library/Extensions", | 
					
						
							|  |  |  |       "/System/Library/Filesystems", | 
					
						
							|  |  |  |       "/System/Library/Filters", | 
					
						
							|  |  |  |       "/System/Library/Fonts", | 
					
						
							|  |  |  |       "/System/Library/Frameworks", | 
					
						
							|  |  |  |       "/System/Library/Graphics", | 
					
						
							|  |  |  |       "/System/Library/IdentityServices", | 
					
						
							|  |  |  |       "/System/Library/Image Capture", | 
					
						
							|  |  |  |       "/System/Library/Input Methods", | 
					
						
							|  |  |  |       "/System/Library/InternetAccounts", | 
					
						
							|  |  |  |       "/System/Library/Java", | 
					
						
							|  |  |  |       "/System/Library/KerberosPlugins", | 
					
						
							|  |  |  |       "/System/Library/Keyboard Layouts", | 
					
						
							|  |  |  |       "/System/Library/Keychains", | 
					
						
							|  |  |  |       "/System/Library/LaunchAgents", | 
					
						
							|  |  |  |       "/System/Library/LaunchDaemons", | 
					
						
							|  |  |  |       "/System/Library/LinguisticData", | 
					
						
							|  |  |  |       "/System/Library/LocationBundles", | 
					
						
							|  |  |  |       "/System/Library/LoginPlugins", | 
					
						
							|  |  |  |       "/System/Library/Messages", | 
					
						
							|  |  |  |       "/System/Library/Metadata", | 
					
						
							|  |  |  |       "/System/Library/MonitorPanels", | 
					
						
							|  |  |  |       "/System/Library/OpenDirectory", | 
					
						
							|  |  |  |       "/System/Library/OpenSSL", | 
					
						
							|  |  |  |       "/System/Library/Password Server Filters", | 
					
						
							|  |  |  |       "/System/Library/PerformanceMetrics", | 
					
						
							|  |  |  |       "/System/Library/Perl", | 
					
						
							|  |  |  |       "/System/Library/PreferencePanes", | 
					
						
							|  |  |  |       "/System/Library/Printers", | 
					
						
							|  |  |  |       "/System/Library/PrivateFrameworks", | 
					
						
							|  |  |  |       "/System/Library/QuickLook", | 
					
						
							|  |  |  |       "/System/Library/QuickTime", | 
					
						
							|  |  |  |       "/System/Library/QuickTimeJava", | 
					
						
							|  |  |  |       "/System/Library/Recents", | 
					
						
							|  |  |  |       "/System/Library/SDKSettingsPlist", | 
					
						
							|  |  |  |       "/System/Library/Sandbox", | 
					
						
							|  |  |  |       "/System/Library/Screen Savers", | 
					
						
							|  |  |  |       "/System/Library/ScreenReader", | 
					
						
							|  |  |  |       "/System/Library/ScriptingAdditions", | 
					
						
							|  |  |  |       "/System/Library/ScriptingDefinitions", | 
					
						
							|  |  |  |       "/System/Library/Security", | 
					
						
							|  |  |  |       "/System/Library/Services", | 
					
						
							|  |  |  |       "/System/Library/Sounds", | 
					
						
							|  |  |  |       "/System/Library/Speech", | 
					
						
							|  |  |  |       "/System/Library/Spelling", | 
					
						
							|  |  |  |       "/System/Library/Spotlight", | 
					
						
							|  |  |  |       "/System/Library/StartupItems", | 
					
						
							|  |  |  |       "/System/Library/SyncServices", | 
					
						
							|  |  |  |       "/System/Library/SystemConfiguration", | 
					
						
							|  |  |  |       "/System/Library/SystemProfiler", | 
					
						
							|  |  |  |       "/System/Library/Tcl", | 
					
						
							|  |  |  |       "/System/Library/TextEncodings", | 
					
						
							|  |  |  |       "/System/Library/User Template", | 
					
						
							|  |  |  |       "/System/Library/UserEventPlugins", | 
					
						
							|  |  |  |       "/System/Library/Video", | 
					
						
							|  |  |  |       "/System/Library/WidgetResources", | 
					
						
							|  |  |  |       "/User Information", | 
					
						
							|  |  |  |       "/Users", | 
					
						
							|  |  |  |       "/Volumes", | 
					
						
							|  |  |  |       "/bin", | 
					
						
							|  |  |  |       "/boot", | 
					
						
							|  |  |  |       "/cores", | 
					
						
							|  |  |  |       "/dev", | 
					
						
							|  |  |  |       "/etc", | 
					
						
							|  |  |  |       "/etc/X11", | 
					
						
							|  |  |  |       "/etc/opt", | 
					
						
							|  |  |  |       "/etc/sgml", | 
					
						
							|  |  |  |       "/etc/xml", | 
					
						
							|  |  |  |       "/home", | 
					
						
							|  |  |  |       "/libexec", | 
					
						
							|  |  |  |       "/lost+found", | 
					
						
							|  |  |  |       "/media", | 
					
						
							|  |  |  |       "/mnt", | 
					
						
							|  |  |  |       "/net", | 
					
						
							|  |  |  |       "/opt", | 
					
						
							|  |  |  |       "/private", | 
					
						
							|  |  |  |       "/private/etc", | 
					
						
							|  |  |  |       "/private/tftpboot", | 
					
						
							|  |  |  |       "/private/tmp", | 
					
						
							|  |  |  |       "/private/var", | 
					
						
							|  |  |  |       "/proc", | 
					
						
							|  |  |  |       "/root", | 
					
						
							|  |  |  |       "/sbin", | 
					
						
							|  |  |  |       "/srv", | 
					
						
							|  |  |  |       "/tmp", | 
					
						
							|  |  |  |       "/usr", | 
					
						
							|  |  |  |       "/usr/X11R6", | 
					
						
							|  |  |  |       "/usr/bin", | 
					
						
							|  |  |  |       "/usr/etc", | 
					
						
							|  |  |  |       "/usr/include", | 
					
						
							|  |  |  |       "/usr/lib", | 
					
						
							|  |  |  |       "/usr/libexec", | 
					
						
							| 
									
										
										
										
											2017-02-19 14:06:51 +01:00
										 |  |  |       "/usr/libexec/cups", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "/usr/local", | 
					
						
							|  |  |  |       "/usr/local/Cellar", | 
					
						
							|  |  |  |       "/usr/local/Frameworks", | 
					
						
							|  |  |  |       "/usr/local/Library", | 
					
						
							|  |  |  |       "/usr/local/bin", | 
					
						
							|  |  |  |       "/usr/local/etc", | 
					
						
							|  |  |  |       "/usr/local/include", | 
					
						
							|  |  |  |       "/usr/local/lib", | 
					
						
							|  |  |  |       "/usr/local/libexec", | 
					
						
							|  |  |  |       "/usr/local/opt", | 
					
						
							|  |  |  |       "/usr/local/share", | 
					
						
							|  |  |  |       "/usr/local/share/man", | 
					
						
							|  |  |  |       "/usr/local/share/man/man1", | 
					
						
							|  |  |  |       "/usr/local/share/man/man2", | 
					
						
							|  |  |  |       "/usr/local/share/man/man3", | 
					
						
							|  |  |  |       "/usr/local/share/man/man4", | 
					
						
							|  |  |  |       "/usr/local/share/man/man5", | 
					
						
							|  |  |  |       "/usr/local/share/man/man6", | 
					
						
							|  |  |  |       "/usr/local/share/man/man7", | 
					
						
							|  |  |  |       "/usr/local/share/man/man8", | 
					
						
							|  |  |  |       "/usr/local/share/man/man9", | 
					
						
							|  |  |  |       "/usr/local/share/man/mann", | 
					
						
							|  |  |  |       "/usr/local/var", | 
					
						
							|  |  |  |       "/usr/local/var/lib", | 
					
						
							|  |  |  |       "/usr/local/var/lock", | 
					
						
							|  |  |  |       "/usr/local/var/run", | 
					
						
							|  |  |  |       "/usr/sbin", | 
					
						
							|  |  |  |       "/usr/share", | 
					
						
							|  |  |  |       "/usr/share/man", | 
					
						
							|  |  |  |       "/usr/share/man/man1", | 
					
						
							|  |  |  |       "/usr/share/man/man2", | 
					
						
							|  |  |  |       "/usr/share/man/man3", | 
					
						
							|  |  |  |       "/usr/share/man/man4", | 
					
						
							|  |  |  |       "/usr/share/man/man5", | 
					
						
							|  |  |  |       "/usr/share/man/man6", | 
					
						
							|  |  |  |       "/usr/share/man/man7", | 
					
						
							|  |  |  |       "/usr/share/man/man8", | 
					
						
							|  |  |  |       "/usr/share/man/man9", | 
					
						
							|  |  |  |       "/usr/share/man/mann", | 
					
						
							|  |  |  |       "/usr/src", | 
					
						
							|  |  |  |       "/var", | 
					
						
							|  |  |  |       "/var/cache", | 
					
						
							|  |  |  |       "/var/lib", | 
					
						
							|  |  |  |       "/var/lock", | 
					
						
							|  |  |  |       "/var/log", | 
					
						
							|  |  |  |       "/var/mail", | 
					
						
							|  |  |  |       "/var/run", | 
					
						
							|  |  |  |       "/var/spool", | 
					
						
							|  |  |  |       "/var/spool/mail", | 
					
						
							|  |  |  |       "/var/tmp", | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |                   .map(&method(:Pathname)) | 
					
						
							|  |  |  |                   .to_set | 
					
						
							|  |  |  |                   .freeze | 
					
						
							| 
									
										
										
										
											2020-08-24 23:49:46 +02:00
										 |  |  |     private_constant :SYSTEM_DIRS | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     # TODO: There should be a way to specify a containing | 
					
						
							|  |  |  |     #       directory under which nothing can be deleted. | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |     UNDELETABLE_PATHS = [ | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/", | 
					
						
							|  |  |  |       "~/Applications", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Applications/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Desktop", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Desktop/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Documents", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Documents/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Downloads", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Downloads/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Mail", | 
					
						
							|  |  |  |       "~/Movies", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Movies/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Music", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Music/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Music/iTunes", | 
					
						
							|  |  |  |       "~/Music/iTunes/iTunes Music", | 
					
						
							|  |  |  |       "~/Music/iTunes/Album Artwork", | 
					
						
							|  |  |  |       "~/News", | 
					
						
							|  |  |  |       "~/Pictures", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Pictures/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Pictures/Desktops", | 
					
						
							|  |  |  |       "~/Pictures/Photo Booth", | 
					
						
							|  |  |  |       "~/Pictures/iChat Icons", | 
					
						
							|  |  |  |       "~/Pictures/iPhoto Library", | 
					
						
							|  |  |  |       "~/Public", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Public/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Sites", | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |       "~/Sites/.localized", | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |       "~/Library", | 
					
						
							|  |  |  |       "~/Library/.localized", | 
					
						
							|  |  |  |       "~/Library/Accessibility", | 
					
						
							|  |  |  |       "~/Library/Accounts", | 
					
						
							|  |  |  |       "~/Library/Address Book Plug-Ins", | 
					
						
							|  |  |  |       "~/Library/Application Scripts", | 
					
						
							|  |  |  |       "~/Library/Application Support", | 
					
						
							|  |  |  |       "~/Library/Application Support/Apple", | 
					
						
							|  |  |  |       "~/Library/Application Support/com.apple.AssistiveControl", | 
					
						
							|  |  |  |       "~/Library/Application Support/com.apple.QuickLook", | 
					
						
							|  |  |  |       "~/Library/Application Support/com.apple.TCC", | 
					
						
							|  |  |  |       "~/Library/Assistants", | 
					
						
							|  |  |  |       "~/Library/Audio", | 
					
						
							|  |  |  |       "~/Library/Automator", | 
					
						
							|  |  |  |       "~/Library/Autosave Information", | 
					
						
							|  |  |  |       "~/Library/Caches", | 
					
						
							|  |  |  |       "~/Library/Calendars", | 
					
						
							|  |  |  |       "~/Library/ColorPickers", | 
					
						
							|  |  |  |       "~/Library/ColorSync", | 
					
						
							|  |  |  |       "~/Library/Colors", | 
					
						
							|  |  |  |       "~/Library/Components", | 
					
						
							|  |  |  |       "~/Library/Compositions", | 
					
						
							|  |  |  |       "~/Library/Containers", | 
					
						
							|  |  |  |       "~/Library/Contextual Menu Items", | 
					
						
							|  |  |  |       "~/Library/Cookies", | 
					
						
							|  |  |  |       "~/Library/DTDs", | 
					
						
							|  |  |  |       "~/Library/Desktop Pictures", | 
					
						
							|  |  |  |       "~/Library/Developer", | 
					
						
							|  |  |  |       "~/Library/Dictionaries", | 
					
						
							|  |  |  |       "~/Library/DirectoryServices", | 
					
						
							|  |  |  |       "~/Library/Displays", | 
					
						
							|  |  |  |       "~/Library/Documentation", | 
					
						
							|  |  |  |       "~/Library/Extensions", | 
					
						
							|  |  |  |       "~/Library/Favorites", | 
					
						
							|  |  |  |       "~/Library/FileSync", | 
					
						
							|  |  |  |       "~/Library/Filesystems", | 
					
						
							|  |  |  |       "~/Library/Filters", | 
					
						
							|  |  |  |       "~/Library/FontCollections", | 
					
						
							|  |  |  |       "~/Library/Fonts", | 
					
						
							|  |  |  |       "~/Library/Frameworks", | 
					
						
							|  |  |  |       "~/Library/GameKit", | 
					
						
							|  |  |  |       "~/Library/Graphics", | 
					
						
							|  |  |  |       "~/Library/Group Containers", | 
					
						
							|  |  |  |       "~/Library/Icons", | 
					
						
							|  |  |  |       "~/Library/IdentityServices", | 
					
						
							|  |  |  |       "~/Library/Image Capture", | 
					
						
							|  |  |  |       "~/Library/Images", | 
					
						
							|  |  |  |       "~/Library/Input Methods", | 
					
						
							|  |  |  |       "~/Library/Internet Plug-Ins", | 
					
						
							|  |  |  |       "~/Library/InternetAccounts", | 
					
						
							|  |  |  |       "~/Library/iTunes", | 
					
						
							|  |  |  |       "~/Library/KeyBindings", | 
					
						
							|  |  |  |       "~/Library/Keyboard Layouts", | 
					
						
							|  |  |  |       "~/Library/Keychains", | 
					
						
							|  |  |  |       "~/Library/LaunchAgents", | 
					
						
							|  |  |  |       "~/Library/LaunchDaemons", | 
					
						
							|  |  |  |       "~/Library/LocationBundles", | 
					
						
							|  |  |  |       "~/Library/LoginPlugins", | 
					
						
							|  |  |  |       "~/Library/Logs", | 
					
						
							|  |  |  |       "~/Library/Mail", | 
					
						
							|  |  |  |       "~/Library/Mail Downloads", | 
					
						
							|  |  |  |       "~/Library/Messages", | 
					
						
							|  |  |  |       "~/Library/Metadata", | 
					
						
							|  |  |  |       "~/Library/Mobile Documents", | 
					
						
							|  |  |  |       "~/Library/MonitorPanels", | 
					
						
							|  |  |  |       "~/Library/OpenDirectory", | 
					
						
							|  |  |  |       "~/Library/PDF Services", | 
					
						
							|  |  |  |       "~/Library/PhonePlugins", | 
					
						
							|  |  |  |       "~/Library/Phones", | 
					
						
							|  |  |  |       "~/Library/PreferencePanes", | 
					
						
							|  |  |  |       "~/Library/Preferences", | 
					
						
							|  |  |  |       "~/Library/Printers", | 
					
						
							|  |  |  |       "~/Library/PrivateFrameworks", | 
					
						
							|  |  |  |       "~/Library/PubSub", | 
					
						
							|  |  |  |       "~/Library/QuickLook", | 
					
						
							|  |  |  |       "~/Library/QuickTime", | 
					
						
							|  |  |  |       "~/Library/Receipts", | 
					
						
							|  |  |  |       "~/Library/Recent Servers", | 
					
						
							|  |  |  |       "~/Library/Recents", | 
					
						
							|  |  |  |       "~/Library/Safari", | 
					
						
							|  |  |  |       "~/Library/Saved Application State", | 
					
						
							|  |  |  |       "~/Library/Screen Savers", | 
					
						
							|  |  |  |       "~/Library/ScreenReader", | 
					
						
							|  |  |  |       "~/Library/ScriptingAdditions", | 
					
						
							|  |  |  |       "~/Library/ScriptingDefinitions", | 
					
						
							|  |  |  |       "~/Library/Scripts", | 
					
						
							|  |  |  |       "~/Library/Security", | 
					
						
							|  |  |  |       "~/Library/Services", | 
					
						
							|  |  |  |       "~/Library/Sounds", | 
					
						
							|  |  |  |       "~/Library/Speech", | 
					
						
							|  |  |  |       "~/Library/Spelling", | 
					
						
							|  |  |  |       "~/Library/Spotlight", | 
					
						
							|  |  |  |       "~/Library/StartupItems", | 
					
						
							|  |  |  |       "~/Library/StickiesDatabase", | 
					
						
							|  |  |  |       "~/Library/Sync Services", | 
					
						
							|  |  |  |       "~/Library/SyncServices", | 
					
						
							|  |  |  |       "~/Library/SyncedPreferences", | 
					
						
							|  |  |  |       "~/Library/TextEncodings", | 
					
						
							|  |  |  |       "~/Library/User Pictures", | 
					
						
							|  |  |  |       "~/Library/Video", | 
					
						
							|  |  |  |       "~/Library/Voices", | 
					
						
							|  |  |  |       "~/Library/WebKit", | 
					
						
							|  |  |  |       "~/Library/WidgetResources", | 
					
						
							|  |  |  |       "~/Library/Widgets", | 
					
						
							|  |  |  |       "~/Library/Workflows", | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |                         .map { |path| Pathname(path.sub(%r{^~(?=(/|$))}, Dir.home)).expand_path } | 
					
						
							|  |  |  |                         .to_set | 
					
						
							|  |  |  |                         .union(SYSTEM_DIRS) | 
					
						
							|  |  |  |                         .freeze | 
					
						
							| 
									
										
										
										
											2020-08-24 23:49:46 +02:00
										 |  |  |     private_constant :UNDELETABLE_PATHS | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     def system_dir?(dir) | 
					
						
							|  |  |  |       SYSTEM_DIRS.include?(Pathname.new(dir).expand_path) | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-14 07:33:34 +02:00
										 |  |  |     def undeletable?(path) | 
					
						
							|  |  |  |       UNDELETABLE_PATHS.include?(Pathname.new(path).expand_path) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end |