gitlab-org--gitlab-foss/lib/gitlab/repository_size_error_messa...

53 lines
1.7 KiB
Ruby

# frozen_string_literal: true
module Gitlab
class RepositorySizeErrorMessage
include ActiveSupport::NumberHelper
delegate :current_size, :limit, :exceeded_size, :additional_repo_storage_available?, to: :@checker
# @param checher [RepositorySizeChecker]
def initialize(checker)
@checker = checker
end
def commit_error
"Your changes could not be committed, #{base_message}"
end
def merge_error
"This merge request cannot be merged, #{base_message}"
end
def push_error(change_size = 0)
"Your push has been rejected, #{base_message(change_size)}. #{more_info_message}"
end
def new_changes_error
if additional_repo_storage_available?
"Your push to this repository has been rejected because it would exceed storage limits. Please contact your GitLab administrator for more information."
else
"Your push to this repository would cause it to exceed the size limit of #{formatted(limit)} so it has been rejected. #{more_info_message}"
end
end
def more_info_message
'Please contact your GitLab administrator for more information.'
end
def above_size_limit_message
"The size of this repository (#{formatted(current_size)}) exceeds the limit of #{formatted(limit)} by #{formatted(exceeded_size)}. You won't be able to push new code to this project. #{more_info_message}"
end
private
def base_message(change_size = 0)
"because this repository has exceeded its size limit of #{formatted(limit)} by #{formatted(exceeded_size(change_size))}"
end
def formatted(number)
number_to_human_size(number, delimiter: ',', precision: 2)
end
end
end