diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-31 21:07:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-31 21:07:42 +0300 |
commit | 580622bdb3c762a8e89facd8a3946881ee480442 (patch) | |
tree | 3ac9d759da23f78f95f50684bd238a9f76839538 /lib/gitlab/repository_size_checker.rb | |
parent | b211a4ea14d5e9ed9b0c248a4e8c5c1d85b542cb (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/repository_size_checker.rb')
-rw-r--r-- | lib/gitlab/repository_size_checker.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/gitlab/repository_size_checker.rb b/lib/gitlab/repository_size_checker.rb new file mode 100644 index 00000000000..cf1af844439 --- /dev/null +++ b/lib/gitlab/repository_size_checker.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +module Gitlab + # Centralized class for repository size related calculations. + class RepositorySizeChecker + attr_reader :limit + + def initialize(current_size_proc:, limit:, enabled: true) + @current_size_proc = current_size_proc + @limit = limit + @enabled = enabled && limit != 0 + end + + def current_size + @current_size ||= @current_size_proc.call + end + + def enabled? + @enabled + end + + def above_size_limit? + return false unless enabled? + + current_size > limit + end + + # @param change_size [int] in bytes + def changes_will_exceed_size_limit?(change_size) + return false unless enabled? + + change_size > limit || exceeded_size(change_size) > 0 + end + + # @param change_size [int] in bytes + def exceeded_size(change_size = 0) + current_size + change_size - limit + end + + def error_message + @error_message_object ||= Gitlab::RepositorySizeErrorMessage.new(self) + end + end +end |