Commit 2cfb90bb authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'less_if_nesting' into 'master'

Less if-else nesting in gitlab_shell.rb

This intention of this change is to make the normal flow of execution
easier to read, and to prevent mistakes in deeply nested if-else trees.

See merge request !60
parents 43b985d9 f65c6802
...@@ -18,20 +18,18 @@ class GitlabShell ...@@ -18,20 +18,18 @@ class GitlabShell
if @origin_cmd if @origin_cmd
parse_cmd parse_cmd
if git_cmds.include?(@git_cmd) raise DisallowedCommandError unless git_cmds.include?(@git_cmd)
ENV['GL_ID'] = @key_id
access = api.check_access(@git_cmd, @repo_name, @key_id, '_any') ENV['GL_ID'] = @key_id
if access.allowed? access = api.check_access(@git_cmd, @repo_name, @key_id, '_any')
process_cmd
else if access.allowed?
message = "gitlab-shell: Access denied for git command <#{@origin_cmd}> by #{log_username}." process_cmd
$logger.warn message
puts access.message
end
else else
raise DisallowedCommandError message = "gitlab-shell: Access denied for git command <#{@origin_cmd}> by #{log_username}."
$logger.warn message
puts access.message
end end
else else
puts "Welcome to GitLab, #{username}!" puts "Welcome to GitLab, #{username}!"
...@@ -51,14 +49,12 @@ class GitlabShell ...@@ -51,14 +49,12 @@ class GitlabShell
@git_cmd = args.first @git_cmd = args.first
if @git_cmd == 'git-annex-shell' if @git_cmd == 'git-annex-shell'
if @config.git_annex_enabled? raise DisallowedCommandError unless @config.git_annex_enabled?
@repo_name = escape_path(args[2].sub(/\A\/~\//, ''))
# Make sure repository has git-annex enabled @repo_name = escape_path(args[2].sub(/\A\/~\//, ''))
init_git_annex(@repo_name)
else # Make sure repository has git-annex enabled
raise DisallowedCommandError init_git_annex(@repo_name)
end
else else
raise DisallowedCommandError unless args.count == 2 raise DisallowedCommandError unless args.count == 2
@repo_name = escape_path(args.last) @repo_name = escape_path(args.last)
...@@ -73,24 +69,22 @@ class GitlabShell ...@@ -73,24 +69,22 @@ class GitlabShell
repo_full_path = File.join(repos_path, repo_name) repo_full_path = File.join(repos_path, repo_name)
if @git_cmd == 'git-annex-shell' if @git_cmd == 'git-annex-shell'
if @config.git_annex_enabled? raise DisallowedCommandError unless @config.git_annex_enabled?
args = Shellwords.shellwords(@origin_cmd)
parsed_args = args = Shellwords.shellwords(@origin_cmd)
args.map do |arg| parsed_args =
# Convert /~/group/project.git to group/project.git args.map do |arg|
# to make git annex path compatible with gitlab-shell # Convert /~/group/project.git to group/project.git
if arg =~ /\A\/~\/.*\.git\Z/ # to make git annex path compatible with gitlab-shell
repo_full_path if arg =~ /\A\/~\/.*\.git\Z/
else repo_full_path
arg else
end arg
end end
end
$logger.info "gitlab-shell: executing git-annex command <#{parsed_args.join(' ')}> for #{log_username}." $logger.info "gitlab-shell: executing git-annex command <#{parsed_args.join(' ')}> for #{log_username}."
exec_cmd(*parsed_args) exec_cmd(*parsed_args)
else
raise DisallowedCommandError
end
else else
$logger.info "gitlab-shell: executing git command <#{@git_cmd} #{repo_full_path}> for #{log_username}." $logger.info "gitlab-shell: executing git command <#{@git_cmd} #{repo_full_path}> for #{log_username}."
exec_cmd(@git_cmd, repo_full_path) exec_cmd(@git_cmd, repo_full_path)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment