diff options
author | Dmitriy Zaporozhets <dzaporozhets@gitlab.com> | 2015-02-20 23:02:55 +0000 |
---|---|---|
committer | Dmitriy Zaporozhets <dzaporozhets@gitlab.com> | 2015-02-20 23:02:55 +0000 |
commit | 2cfb90bb6eececd4693661df1311c16e51686b05 (patch) | |
tree | 995c9f1b32d82c145707a3bad2aa1055b68b1f64 | |
parent | 43b985d93b31315dc2f30eaa5f4e022f9aeaa9e1 (diff) | |
parent | f65c68025e7c86618f70e49b89ef44989c05a83d (diff) | |
download | gitlab-shell-2cfb90bb6eececd4693661df1311c16e51686b05.tar.gz |
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
-rw-r--r-- | lib/gitlab_shell.rb | 62 |
1 files changed, 28 insertions, 34 deletions
diff --git a/lib/gitlab_shell.rb b/lib/gitlab_shell.rb index a0fc65c..806e016 100644 --- a/lib/gitlab_shell.rb +++ b/lib/gitlab_shell.rb @@ -18,20 +18,18 @@ class GitlabShell if @origin_cmd parse_cmd - if git_cmds.include?(@git_cmd) - ENV['GL_ID'] = @key_id + raise DisallowedCommandError unless git_cmds.include?(@git_cmd) - access = api.check_access(@git_cmd, @repo_name, @key_id, '_any') + ENV['GL_ID'] = @key_id - if access.allowed? - process_cmd - else - message = "gitlab-shell: Access denied for git command <#{@origin_cmd}> by #{log_username}." - $logger.warn message - puts access.message - end + access = api.check_access(@git_cmd, @repo_name, @key_id, '_any') + + if access.allowed? + process_cmd else - raise DisallowedCommandError + message = "gitlab-shell: Access denied for git command <#{@origin_cmd}> by #{log_username}." + $logger.warn message + puts access.message end else puts "Welcome to GitLab, #{username}!" @@ -51,14 +49,12 @@ class GitlabShell @git_cmd = args.first if @git_cmd == 'git-annex-shell' - if @config.git_annex_enabled? - @repo_name = escape_path(args[2].sub(/\A\/~\//, '')) + raise DisallowedCommandError unless @config.git_annex_enabled? - # Make sure repository has git-annex enabled - init_git_annex(@repo_name) - else - raise DisallowedCommandError - end + @repo_name = escape_path(args[2].sub(/\A\/~\//, '')) + + # Make sure repository has git-annex enabled + init_git_annex(@repo_name) else raise DisallowedCommandError unless args.count == 2 @repo_name = escape_path(args.last) @@ -73,24 +69,22 @@ class GitlabShell repo_full_path = File.join(repos_path, repo_name) if @git_cmd == 'git-annex-shell' - if @config.git_annex_enabled? - args = Shellwords.shellwords(@origin_cmd) - parsed_args = - args.map do |arg| - # Convert /~/group/project.git to group/project.git - # to make git annex path compatible with gitlab-shell - if arg =~ /\A\/~\/.*\.git\Z/ - repo_full_path - else - arg - end + raise DisallowedCommandError unless @config.git_annex_enabled? + + args = Shellwords.shellwords(@origin_cmd) + parsed_args = + args.map do |arg| + # Convert /~/group/project.git to group/project.git + # to make git annex path compatible with gitlab-shell + if arg =~ /\A\/~\/.*\.git\Z/ + repo_full_path + else + arg end + end - $logger.info "gitlab-shell: executing git-annex command <#{parsed_args.join(' ')}> for #{log_username}." - exec_cmd(*parsed_args) - else - raise DisallowedCommandError - end + $logger.info "gitlab-shell: executing git-annex command <#{parsed_args.join(' ')}> for #{log_username}." + exec_cmd(*parsed_args) else $logger.info "gitlab-shell: executing git command <#{@git_cmd} #{repo_full_path}> for #{log_username}." exec_cmd(@git_cmd, repo_full_path) |