auto_freeze 0.1.0 → 0.3.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: 573ce9f2f31e6d1cb04a6216048206178657d0654fcd4732d61a6aa95145cf24
4
+ data.tar.gz: af75059bfafc3f2b77df3c87f4daf76b07ffacb0dfb1dd8b310ad55ec190b11e
5
5
  SHA512:
6
- metadata.gz: 5c5a8111c77a08e754dd5a06f7bac526bfe6ae3deeda2e00f4b4cf83e7a60463af03a7945ebac9030549486edb51fe8417af67c1276782a52c4a3b0ea0d1a70e
7
- data.tar.gz: cc0acbff2058d2b184e64ec3b7dd8bea8286a9d2d48c9252519463645bdcd2d861b4866357deecee1d5b72711a9fc1a884501ace6026336343e570b82b64ddc1
6
+ metadata.gz: 35f48fda0a9c606c8eb61ef0b280dc79dac4fb7ce7c6d1ae69eabc4634b5b62fb92563e3a31b22e32e45d967747d54492030b27942edb011f9f66746427d0b02
7
+ data.tar.gz: 79f412097baecac2ac58eab81004184a88ca01f8d3b52864918381ecba6bb6b9bf89230ea65c59c7b89ffe7f29938eea6c9d3670a8e72795506072f8787975ce
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.3.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.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thong Kuah
@@ -37,6 +37,20 @@ dependencies:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '14.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: pry-byebug
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.12'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.12'
40
54
  description: Allows you to select specific gems to be required with `frozen_string_literal`
41
55
  set to true.
42
56
  email:
@@ -67,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  requirements: []
70
- rubygems_version: 4.0.10
84
+ rubygems_version: 4.0.15
71
85
  specification_version: 4
72
86
  summary: Sets the `frozen_string_literal` compile option for your gems.
73
87
  test_files: []