OSDN Git Service

Move OS detection to task helpers and add detection of OS X
authorRiyad Preukschas <riyad@informatik.uni-bremen.de>
Sat, 12 Jan 2013 00:24:51 +0000 (01:24 +0100)
committerRiyad Preukschas <riyad@informatik.uni-bremen.de>
Sat, 12 Jan 2013 00:24:51 +0000 (01:24 +0100)
lib/tasks/gitlab/info.rake
lib/tasks/gitlab/task_helpers.rake

index fd3e83e..4b90668 100644 (file)
@@ -3,20 +3,6 @@ namespace :gitlab do
     desc "GITLAB | Show information about GitLab and its environment"
     task info: :environment  do
 
-      # check which OS is running
-      os_name = run("lsb_release -irs")
-      os_name ||= if File.readable?('/etc/system-release')
-                    File.read('/etc/system-release')
-                  end
-      os_name ||= if File.readable?('/etc/debian_version')
-                    debian_version = File.read('/etc/debian_version')
-                    "Debian #{debian_version}"
-                  end
-      os_name ||= if File.readable?('/etc/SuSE-release')
-                    File.read('/etc/SuSE-release')
-                  end
-      os_name.try(:squish!)
-
       # check if there is an RVM environment
       rvm_version = run_and_match("rvm --version", /[\d\.]+/).try(:to_s)
       # check Ruby version
index c9635f0..5b5c3c3 100644 (file)
@@ -1,5 +1,27 @@
 namespace :gitlab do
 
+  # Check which OS is running
+  #
+  # It will primarily use lsb_relase to determine the OS.
+  # It has fallbacks to Debian, SuSE and OS X.
+  def os_name
+    os_name = run("lsb_release -irs")
+    os_name ||= if File.readable?('/etc/system-release')
+                  File.read('/etc/system-release')
+                end
+    os_name ||= if File.readable?('/etc/debian_version')
+                  debian_version = File.read('/etc/debian_version')
+                  "Debian #{debian_version}"
+                end
+    os_name ||= if File.readable?('/etc/SuSE-release')
+                  File.read('/etc/SuSE-release')
+                end
+    os_name ||= if os_x_version = run("sw_vers -productVersion")
+                  "Mac OS X #{os_x_version}"
+                end
+    os_name.try(:squish!)
+  end
+
   # Runs the given command and matches the output agains the given pattern
   #
   # Returns nil if nothing matched