haml_lint 0.43.0 → 0.45.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba176a70407bd7ef377d16813fba194a6dc56875da03952116f09250362608cc
4
- data.tar.gz: 3cacf61ff442811b53be9c457519b435cda94e6dfc09bd0831e8bc4a8cc535ad
3
+ metadata.gz: 8d47102747f37b5169cf47af34064ea1346df32e5e530cc1d1f17c293de9a34e
4
+ data.tar.gz: aebecb2a1f37c6c0b20c67ec176c488bce59f667340d4f5a6cbe43736d7532bc
5
5
  SHA512:
6
- metadata.gz: 370beb82cc7d8391944be45c3490aaebef0da77f9eadb621d118a86800d54560e358309eba32f3ebd63ed7b5bcc5e5e069fa636b0d08c6ffc3121603496c6116
7
- data.tar.gz: 678c79722a1baae72336cf3b7d7013ae155a61c3b4389ddc2885aadd566f72b54ce692814f9e4da35b65688bdf34d899fe8acf1c05215a6e482aa8071c96e5a6
6
+ metadata.gz: e428d39889b5ab2857560151bea5e233d49ce80bac3fb1dc454e7f042567de7ec05471488c60d774e9506ce72399ac2e4d821d3e106126539740eafa78f2ab0f
7
+ data.tar.gz: efea4f7dbd70a5669f56f57871ffa29bdac38120e90943c3393ab941421ffd4cbfaf941226d71d707bbbda4800966d317350cb24f9cc15528a6418c42d4bd702
@@ -50,11 +50,18 @@ module HamlLint
50
50
  # @return [HamlLint::Configuration]
51
51
  def load_file(file, context = {})
52
52
  context[:loaded_files] ||= []
53
+ context[:loaded_files].map! { |config_file| File.expand_path(config_file) }
53
54
  context[:exclude_files] ||= []
54
- config = load_from_file(file)
55
+ context[:exclude_files].map! { |config_file| File.expand_path(config_file) }
56
+ config = load_from_file(File.expand_path(file))
55
57
 
56
- [default_configuration, resolve_inheritance(config, context), config]
57
- .reduce { |acc, elem| acc.merge(elem) }
58
+ configs = if context[:loaded_files].any?
59
+ [resolve_inheritance(config, context), config]
60
+ else
61
+ [default_configuration, resolve_inheritance(config, context), config]
62
+ end
63
+
64
+ configs.reduce { |acc, elem| acc.merge(elem) }
58
65
  rescue Psych::SyntaxError, Errno::ENOENT => e
59
66
  raise HamlLint::Exceptions::ConfigurationError,
60
67
  "Unable to load configuration from '#{file}': #{e}",
@@ -91,6 +98,18 @@ module HamlLint
91
98
  hash['inherits_from'].concat(Array(hash.delete('inherit_from')))
92
99
  end
93
100
 
101
+ if hash.key?('inherit_gem')
102
+ hash['inherits_from'] ||= []
103
+
104
+ gems = hash.delete('inherit_gem')
105
+ (gems || {}).each_pair.reverse_each do |gem_name, config_path|
106
+ Array(config_path).reverse_each do |path|
107
+ # Put gem configuration first so local configuration overrides it.
108
+ hash['inherits_from'].unshift gem_config_path(gem_name, path)
109
+ end
110
+ end
111
+ end
112
+
94
113
  HamlLint::Configuration.new(hash, file)
95
114
  end
96
115
 
@@ -129,10 +148,28 @@ module HamlLint
129
148
  # @return [HamlLint::Configuration]
130
149
  def resolve_inheritance(config, context)
131
150
  Array(config['inherits_from'])
132
- .map { |config_file| resolve(config_file, context) }
151
+ .map { |config_file| resolve(File.expand_path(config_file), context) }
133
152
  .compact
134
153
  .reduce { |acc, elem| acc.merge(elem) } || config
135
154
  end
155
+
156
+ # Resolves the config file path relative to a gem
157
+ #
158
+ # @param gem_name [String] name of the gem
159
+ # @param relative_config_path [String] path of the file to resolve, relative to the gem root
160
+ # @return [Stringg]
161
+ def gem_config_path(gem_name, relative_config_path)
162
+ if defined?(Bundler)
163
+ gem = Bundler.load.specs[gem_name].first
164
+ gem_path = gem.full_gem_path if gem
165
+ end
166
+
167
+ gem_path ||= Gem::Specification.find_by_name(gem_name).gem_dir
168
+
169
+ File.join(gem_path, relative_config_path)
170
+ rescue Gem::LoadError => e
171
+ raise Gem::LoadError, "Unable to find gem #{gem_name}; is the gem installed? #{e}"
172
+ end
136
173
  end
137
174
  end
138
175
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module HamlLint
5
- VERSION = '0.43.0'
5
+ VERSION = '0.45.0'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml_lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.43.0
4
+ version: 0.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-16 00:00:00.000000000 Z
11
+ date: 2023-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml