auto_freeze 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 627d69c77fff17254fa24464b518fa8ec96208cf5e330766aa3025c15ec0fcfe
4
- data.tar.gz: 729dba1b2e421a9ff38fffe62e3e5e2099aa327a8a27ac54fd0102e6a9dbc5ad
3
+ metadata.gz: ff37fb46e52cc14d31f954057b1bd7b76e5eef941e1947d8e0a7b7e8052c1a2d
4
+ data.tar.gz: 549dd476c247053369d5d0250a116a1ada74eb8d800ff8665dd67207e126d46a
5
5
  SHA512:
6
- metadata.gz: 5c5a8111c77a08e754dd5a06f7bac526bfe6ae3deeda2e00f4b4cf83e7a60463af03a7945ebac9030549486edb51fe8417af67c1276782a52c4a3b0ea0d1a70e
7
- data.tar.gz: cc0acbff2058d2b184e64ec3b7dd8bea8286a9d2d48c9252519463645bdcd2d861b4866357deecee1d5b72711a9fc1a884501ace6026336343e570b82b64ddc1
6
+ metadata.gz: 2c76ea12bb32549006daf0ed754b4a839abe0cbe813a5c8288509fb3e3a856f8d96d736a69965f34d9d5f90bb5cf681e7286569bb0d7de82659678d8495e1d50
7
+ data.tar.gz: 710c3f1bb986e1a52597c5490c5b7b30169d9a7b67850b0958ccb686df8597e1de55e6a66e67c363157a53f8736539a24ca464acedf5d31ad300ee3f8f5eac45
data/README.md CHANGED
@@ -27,20 +27,20 @@ You can exclude certain gems:
27
27
 
28
28
  ```ruby
29
29
  exclude_gems = %w[
30
- arr-pm-0.0.12
31
- email_reply_trimmer-0.1.6
32
- method_source-1.0.0
33
- seed-fu-2.3.9
34
- unicode_utils-1.4.0
30
+ arr-pm
31
+ email_reply_trimmer
32
+ method_source
33
+ seed-fu
34
+ unicode_utils
35
35
  ].freeze
36
36
  AutoFreeze.setup!(excluded_gems: exclude_gems)
37
37
  Bundler.require(*Rails.groups)
38
38
  ```
39
39
 
40
- To only freeze gems you specify, pass an array into `auto_freeze` option:
40
+ To only freeze gems you specify, pass an array into `included_gems` option:
41
41
 
42
42
  ```ruby
43
- AutoFreeze.setup!(auto_freeze: %w[httpclient-2.9.0])
43
+ AutoFreeze.setup!(included_gems: %w[httpclient])
44
44
  Bundler.require(*Rails.groups)
45
45
  ```
46
46
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AutoFreeze
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/auto_freeze.rb CHANGED
@@ -5,22 +5,36 @@ require 'freezolite'
5
5
 
6
6
  # Set frozen_string_literals: true when requiring gems.
7
7
  module AutoFreeze
8
+ GemError = Class.new(StandardError)
9
+
8
10
  class << self
9
- def setup!(auto_freeze: true, excluded_gems: [])
11
+ def setup!(included_gems: [], excluded_gems: [])
12
+ if !included_gems.empty? && !excluded_gems.empty?
13
+ raise ArgumentError, "Cannot use both included_gems: and excluded_gems: arguments"
14
+ end
15
+
10
16
  # Freezolite uses File.fnmatch for its patterns.
11
17
  # It also uses load_iseq(<absolute_path>) callback for its around hook.
12
18
  # So to freeze gem, we need to find the absolute path using `Gem.path`.
13
- include_patterns = if auto_freeze.is_a?(Array)
14
- auto_freeze.flat_map do |gem|
15
- Gem::Specification.find_by_full_name(gem).full_require_paths.map do |require_path|
16
- File.join(require_path, "*.rb")
17
- end
18
- end
19
- else
20
- Gem.path.map { |path| File.join(path, "*.rb") }
21
- end
19
+ include_patterns = if included_gems.empty?
20
+ Gem.path.map { |path| File.join(path, "*.rb") }
21
+ else
22
+ included_gems.flat_map do |gem_name|
23
+ Gem::Specification.find_by_name(gem_name).full_require_paths.map do |require_path|
24
+ File.join(require_path, "*.rb")
25
+ end
26
+ rescue Gem::MissingSpecError => e
27
+ raise GemError, "Could not find '#{gem_name}'", cause: e
28
+ end
29
+ end
30
+
31
+ exclude_patterns = excluded_gems.map do |gem_name|
32
+ full_gem_name = Gem::Specification.find_by_name(gem_name).full_name
22
33
 
23
- exclude_patterns = excluded_gems.map { |gem_name| File.join("**", gem_name, "**") }
34
+ File.join("**", full_gem_name, "**")
35
+ rescue Gem::MissingSpecError => e
36
+ raise GemError, "Could not find '#{gem_name}'", cause: e
37
+ end
24
38
 
25
39
  freezolite_setup(
26
40
  patterns: include_patterns,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto_freeze
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thong Kuah
@@ -23,6 +23,20 @@ dependencies:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0.6'
26
+ - !ruby/object:Gem::Dependency
27
+ name: require-hooks
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 0.2.3
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.2.3
26
40
  - !ruby/object:Gem::Dependency
27
41
  name: gitlab-styles
28
42
  requirement: !ruby/object:Gem::Requirement
@@ -37,6 +51,48 @@ dependencies:
37
51
  - - "~>"
38
52
  - !ruby/object:Gem::Version
39
53
  version: '14.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: pry-byebug
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.12'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.12'
68
+ - !ruby/object:Gem::Dependency
69
+ name: pry-shell
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.6.4
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.6.4
82
+ - !ruby/object:Gem::Dependency
83
+ name: unicode_utils
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '='
87
+ - !ruby/object:Gem::Version
88
+ version: 1.4.0
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - '='
94
+ - !ruby/object:Gem::Version
95
+ version: 1.4.0
40
96
  description: Allows you to select specific gems to be required with `frozen_string_literal`
41
97
  set to true.
42
98
  email:
@@ -67,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
123
  - !ruby/object:Gem::Version
68
124
  version: '0'
69
125
  requirements: []
70
- rubygems_version: 4.0.10
126
+ rubygems_version: 4.0.11
71
127
  specification_version: 4
72
128
  summary: Sets the `frozen_string_literal` compile option for your gems.
73
129
  test_files: []