Commit 12b4bb5946e6f43962a2161711e672facce1c1f4

Authored by Riyad Preukschas
1 parent 84465576

Make gitlab:env:info task more robust

Closes #2213
Showing 1 changed file with 39 additions and 21 deletions   Show diff stats
lib/tasks/gitlab/info.rake
1 1 namespace :gitlab do
2 2 namespace :env do
3 3 desc "GITLAB | Show information about GitLab and its environment"
4   - task :info => :environment do
  4 + task info: :environment do
5 5  
6 6 # check which OS is running
7   - if Kernel.system('lsb_release > /dev/null 2>&1')
8   - os_name = `lsb_release -irs`
9   - elsif File.exists?('/etc/system-release') && File.readable?('/etc/system-release')
10   - os_name = File.read('/etc/system-release')
11   - elsif File.exists?('/etc/debian_version') && File.readable?('/etc/debian_version')
12   - debian_version = File.read('/etc/debian_version')
13   - os_name = "Debian #{debian_version}"
14   - end
15   - os_name = os_name.gsub(/\n/, '')
  7 + os_name = run("lsb_release -irs")
  8 + os_name ||= if File.readable?('/etc/system-release')
  9 + File.read('/etc/system-release')
  10 + end
  11 + os_name ||= if File.readable?('/etc/debian_version')
  12 + debian_version = File.read('/etc/debian_version')
  13 + "Debian #{debian_version}"
  14 + end
  15 + os_name.squish!
16 16  
17 17 # check if there is an RVM environment
18   - m, rvm_version = `rvm --version`.match(/rvm ([\d\.]+) /).to_a
  18 + rvm_version = run_and_match("rvm --version", /[\d\.]+/).try(:to_s)
  19 + # check Gem version
  20 + gem_version = run("gem --version")
19 21 # check Bundler version
20   - m, bunder_version = `bundle --version`.match(/Bundler version ([\d\.]+)/).to_a
  22 + bunder_version = run_and_match("bundle --version", /[\d\.]+/).try(:to_s)
21 23 # check Bundler version
22   - m, rake_version = `rake --version`.match(/rake, version ([\d\.]+)/).to_a
  24 + rake_version = run_and_match("rake --version", /[\d\.]+/).try(:to_s)
23 25  
24 26 puts ""
25 27 puts "System information".yellow
26   - puts "System:\t\t#{os_name}"
  28 + puts "System:\t\t#{os_name || "unknown".red}"
27 29 puts "Current User:\t#{`whoami`}"
28 30 puts "Using RVM:\t#{rvm_version.present? ? "yes".green : "no"}"
29 31 puts "RVM Version:\t#{rvm_version}" if rvm_version.present?
30   - puts "Ruby Version:\t#{ENV['RUBY_VERSION']}"
31   - puts "Gem Version:\t#{`gem --version`}"
32   - puts "Bundler Version:#{bunder_version}"
33   - puts "Rake Version:\t#{rake_version}"
  32 + puts "Ruby Version:\t#{ENV['RUBY_VERSION'] || "unknown".red}"
  33 + puts "Gem Version:\t#{gem_version || "unknown".red}"
  34 + puts "Bundler Version:#{bunder_version || "unknown".red}"
  35 + puts "Rake Version:\t#{rake_version || "unknown".red}"
34 36  
35 37  
36 38 # check database adapter
... ... @@ -61,13 +63,11 @@ namespace :gitlab do
61 63 gitolite_version_file = "#{Gitlab.config.git_base_path}/../gitolite/src/VERSION"
62 64 if File.exists?(gitolite_version_file) && File.readable?(gitolite_version_file)
63 65 gitolite_version = File.read(gitolite_version_file)
64   - else
65   - gitolite_version = 'unknown'
66 66 end
67 67  
68 68 puts ""
69 69 puts "Gitolite information".yellow
70   - puts "Version:\t#{gitolite_version}"
  70 + puts "Version:\t#{gitolite_version || "unknown".red}"
71 71 puts "Admin URI:\t#{Gitlab.config.gitolite_admin_uri}"
72 72 puts "Admin Key:\t#{Gitlab.config.gitolite_admin_key}"
73 73 puts "Repositories:\t#{Gitlab.config.git_base_path}"
... ... @@ -75,5 +75,23 @@ namespace :gitlab do
75 75 puts "Git:\t\t#{Gitlab.config.git.path}"
76 76  
77 77 end
  78 +
  79 +
  80 + # Helper methods
  81 +
  82 + # Runs the given command and matches the output agains the given RegExp
  83 + def run_and_match(command, regexp)
  84 + run(command).try(:match, regexp)
  85 + end
  86 +
  87 + # Runs the given command
  88 + #
  89 + # Returns nil if the command was not found
  90 + # Returns the output of the command otherwise
  91 + def run(command)
  92 + unless `#{command} 2>/dev/null`.blank?
  93 + `#{command}`
  94 + end
  95 + end
78 96 end
79 97 end
... ...