1
+ # frozen_string_literal: true
2
+
1
3
module Overcommit ::Hook ::PreCommit
4
+ # Checks for oversized files before committing.
2
5
class FileSize < Base
3
6
DEFAULT_SIZE_LIMIT_BYTES = 1_000_000 # 1MB
4
7
@@ -12,43 +15,51 @@ def run
12
15
13
16
private
14
17
15
- def oversized_files
16
- @_oversized_files ||= build_oversized_file_list
17
- end
18
+ def oversized_files
19
+ @oversized_files ||= build_oversized_file_list
20
+ end
18
21
19
- def build_oversized_file_list
20
- applicable_files . select do |file |
21
- file_size ( file ) > size_limit_bytes
22
- end
22
+ def build_oversized_file_list
23
+ applicable_files . select do |file |
24
+ file_size ( file ) > size_limit_bytes
23
25
end
26
+ end
24
27
25
- def size_limit_bytes
26
- config . fetch ( " size_limit_bytes" , DEFAULT_SIZE_LIMIT_BYTES )
27
- end
28
+ def size_limit_bytes
29
+ config . fetch ( ' size_limit_bytes' , DEFAULT_SIZE_LIMIT_BYTES )
30
+ end
28
31
29
- def error_message_for ( file )
30
- Overcommit ::Hook ::Message . new (
31
- :error ,
32
- file ,
33
- nil ,
34
- error_text_for ( file )
35
- )
36
- end
32
+ def error_message_for ( file )
33
+ Overcommit ::Hook ::Message . new (
34
+ :error ,
35
+ file ,
36
+ nil ,
37
+ error_text_for ( file )
38
+ )
39
+ end
37
40
38
- def error_text_for ( file )
39
- "#{ relative_path_for ( file ) } is over the file size limit of #{ size_limit_bytes } bytes (is #{ file_size ( file ) } bytes)"
40
- end
41
+ def error_text_for ( file )
42
+ error_text_format % {
43
+ path : relative_path_for ( file ) ,
44
+ limit : size_limit_bytes ,
45
+ size : file_size ( file )
46
+ }
47
+ end
41
48
42
- def file_size ( file )
43
- File . size ( file )
44
- end
49
+ def error_text_format
50
+ '%<path>s is over the file size limit of %<limit>s bytes (is %<size>s bytes)'
51
+ end
45
52
46
- def relative_path_for ( file )
47
- Pathname . new ( file ) . relative_path_from ( repo_root_path )
48
- end
53
+ def file_size ( file )
54
+ File . size ( file )
55
+ end
49
56
50
- def repo_root_path
51
- @_repo_root_path ||= Pathname . new ( Overcommit ::Utils . repo_root )
52
- end
57
+ def relative_path_for ( file )
58
+ Pathname . new ( file ) . relative_path_from ( repo_root_path )
59
+ end
60
+
61
+ def repo_root_path
62
+ @repo_root_path ||= Pathname . new ( Overcommit ::Utils . repo_root )
63
+ end
53
64
end
54
65
end
0 commit comments