Commit 12b4bb5946e6f43962a2161711e672facce1c1f4
1 parent
84465576
Exists in
master
and in
4 other branches
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 | ... | ... |