Module: Platform::OS::OSX

Defined in:
lib/Platform/OS/OSX.rb,
lib/Platform/OS/OSX/SystemProfiler.rb

Defined Under Namespace

Modules: SystemProfiler

Class Method Summary collapse

Class Method Details

.application_path_for_application(application_name) ⇒ Object



83
84
85
86
87
88
# File 'lib/Platform/OS/OSX.rb', line 83

def application_path_for_application(application_name)
  application_paths.detect do |application_path|
    File.basename(application_path) == application_name ||
    File.basename(application_path, '.app') == application_name
  end
end

.application_paths(username = nil) ⇒ Object



59
60
61
# File 'lib/Platform/OS/OSX.rb', line 59

def application_paths(username = nil)
  system_application_paths + user_application_paths(username)
end

.applications_in_directory(directory) ⇒ Object



94
95
96
# File 'lib/Platform/OS/OSX.rb', line 94

def applications_in_directory(directory)
  Files.new(path: directory, pattern: '*.app').collect{|file| file.path}
end

.detect(return_version_string = false) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/Platform/OS/OSX.rb', line 27

def detect(return_version_string = false)
  if return_version_string
    SystemProfiler.system_version
  else
    self.methods(false).select{|e| e =~ /\?$/}.detect{|e| send(e)}.to_s.capture(/^(\w+)\?/)
  end
end

.leopard?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/Platform/OS/OSX.rb', line 39

def leopard?
  SystemProfiler.major_system_version == 10 && SystemProfiler.minor_system_version == 5
end

.lion?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/Platform/OS/OSX.rb', line 47

def lion?
  SystemProfiler.major_system_version == 10 && SystemProfiler.minor_system_version == 7
end

.mavericks?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/Platform/OS/OSX.rb', line 55

def mavericks?
  SystemProfiler.major_system_version == 10 && SystemProfiler.minor_system_version == 9
end

.mountain_lion?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/Platform/OS/OSX.rb', line 51

def mountain_lion?
  SystemProfiler.major_system_version == 10 && SystemProfiler.minor_system_version == 8
end

.nameObject



23
24
25
# File 'lib/Platform/OS/OSX.rb', line 23

def name
  detect.split('_').collect{|e| e.capitalize}.join(' ')
end

.snow_leopard?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/Platform/OS/OSX.rb', line 43

def snow_leopard?
  SystemProfiler.major_system_version == 10 && SystemProfiler.minor_system_version == 6
end

.start(application_name) ⇒ Object



90
91
92
# File 'lib/Platform/OS/OSX.rb', line 90

def start(application_name)
  system("open #{application_path_for_application(application_name)}")
end

.system_application_pathsObject



63
64
65
# File 'lib/Platform/OS/OSX.rb', line 63

def system_application_paths
  applications_in_directory('/Applications')
end

.tiger?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/Platform/OS/OSX.rb', line 35

def tiger?
  SystemProfiler.major_system_version == 10 && SystemProfiler.minor_system_version == 4
end

.user_application_paths(username = nil) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/Platform/OS/OSX.rb', line 67

def user_application_paths(username = nil)
  if username
    applications_in_directory("/Users/#{username}/Applications")
  else
    usernames.collect do |username|
      applications_in_directory("/Users/#{username}/Applications")
    end.flatten
  end
end

.usernamesObject



77
78
79
80
81
# File 'lib/Platform/OS/OSX.rb', line 77

def usernames
  `dscl . list /users`.split("\n")
    .reject{|username| username =~ /^_/}
      .reject{|username| %w{daemon nobody root}.include?(username)}
end

.versionObject



15
16
17
# File 'lib/Platform/OS/OSX.rb', line 15

def version
  Version.new(version_string)
end

.version_stringObject



19
20
21
# File 'lib/Platform/OS/OSX.rb', line 19

def version_string
  detect(true)
end