squared 0.0.9 → 0.0.10

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.
@@ -4,11 +4,13 @@ module Squared
4
4
  module Workspace
5
5
  module Project
6
6
  class Ruby < Git
7
+ VAR_SET = %i[version autodetect].freeze
7
8
  GEMFILE = %w[Gemfile Gemfile.lock gem.deps.rb Isolate].freeze
9
+ RUBY_DIR = [*GEMFILE, *::Rake::Application::DEFAULT_RAKEFILES, 'README.rdoc'].freeze
8
10
  OPT_INSTALL = %w[no-cache force].freeze
9
11
  OPT_UPDATE = %w[redownload local strict conservative group=s].freeze
10
12
  OPT_OUTDATED = %w[local strict pre only-explicit group=s].freeze
11
- private_constant :GEMFILE, :OPT_INSTALL, :OPT_UPDATE, :OPT_OUTDATED
13
+ private_constant :VAR_SET, :GEMFILE, :RUBY_DIR, :OPT_INSTALL, :OPT_UPDATE, :OPT_OUTDATED
12
14
 
13
15
  class << self
14
16
  def populate(*); end
@@ -19,7 +21,7 @@ module Squared
19
21
 
20
22
  def is_a?(val)
21
23
  if (val = as_path(val))
22
- [*GEMFILE, *::Rake::Application::DEFAULT_RAKEFILES, 'README.rdoc'].any? { |file| val.join(file).exist? }
24
+ RUBY_DIR.any? { |file| val.join(file).exist? }
23
25
  else
24
26
  super
25
27
  end
@@ -40,8 +42,14 @@ module Squared
40
42
 
41
43
  def initialize(*, version: nil, autodetect: false, **kwargs)
42
44
  super
43
- initialize_build(Ruby.ref, **kwargs)
44
- @version = env('BUILD', version, suffix: 'VERSION', strict: true)
45
+ if @pass.include?(Ruby.ref)
46
+ initialize_ref(Ruby.ref)
47
+ initialize_logger(**kwargs)
48
+ else
49
+ initialize_build(Ruby.ref, **kwargs)
50
+ initialize_env(**kwargs)
51
+ end
52
+ @version = env('BUILD', version, suffix: 'VERSION')
45
53
  @autodetect = autodetect
46
54
  index = GEMFILE.index { |file| base_path(file).exist? } || 0
47
55
  @gemfile = base_path(GEMFILE[index])
@@ -83,7 +91,7 @@ module Squared
83
91
 
84
92
  desc format_desc(action, nil, 'command*')
85
93
  task action, [:command] do |_, args|
86
- rake args.to_a
94
+ rake(*args.to_a)
87
95
  end
88
96
  end
89
97
  else
@@ -186,7 +194,7 @@ module Squared
186
194
 
187
195
  def copy(from: 'lib', glob: '**/*', gemdir: @gemdir, override: false)
188
196
  if @copy && !override
189
- return super if @copy.is_a?(::String)
197
+ return super if runnable?(@copy)
190
198
 
191
199
  from = @copy[:from] if @copy.key?(:from)
192
200
  glob = @copy[:glob] if @copy.key?(:glob)
@@ -202,99 +210,108 @@ module Squared
202
210
  b = dest.join(val)
203
211
  c = glob[i] || '**/*'
204
212
  log.warn "cp #{a.join(c)} #{b}"
205
- copy_d(a, b, glob: c, verbose: verbose?)
213
+ copy_d(a, b, glob: c, verbose: verbose)
206
214
  end
207
215
  end
208
216
 
209
217
  def outdated(rev = nil, opts: [])
210
218
  cmd = bundle_session 'outdated', rev && "--#{rev}"
211
219
  append_bundle opts, OPT_OUTDATED
212
- cmd = cmd.done
220
+ cmd = close_session(cmd)
213
221
  log.info cmd
214
- print_item format_banner(cmd) if store_pwd || invoked_sync?("outdated#{rev && ":#{rev}"}")
222
+ banner = format_banner(cmd)
223
+ if invoked_sync?('outdated', rev)
224
+ print_item banner
225
+ banner = nil
226
+ end
215
227
  start = 0
216
228
  found = 0
217
229
  major = 0
218
- IO.popen("#{cmd} --no-color").each do |line|
219
- if start > 0
220
- unless pipe?
221
- data = line.scan(SEM_VER)
222
- cur = data.shift
223
- lat = data.shift
224
- if cur && lat
225
- semver(cur)
226
- semver(lat)
227
- c = cur.join
228
- l = lat.join
229
- styles = []
230
- data.each do |val|
231
- break unless (req = /(>=?|=|~>|!=|<=?) (#{Regexp.escape(val.join)})/.match(line))
232
-
233
- v = semver(val).join
234
- case req[1]
235
- when '>', '>='
236
- if semmajor(cur, lat)
237
- styles = %i[green bold]
238
- major += 1
239
- else
240
- styles[0] = cur[2] == lat[2] ? :yellow : :green
241
- end
242
- when '<', '<='
243
- if c <= v
230
+ pwd_set do
231
+ IO.popen("#{cmd} --no-color").each do |line|
232
+ if start > 0
233
+ unless stdin?
234
+ data = line.scan(SEM_VER)
235
+ cur = data.shift
236
+ lat = data.shift
237
+ if cur && lat
238
+ semver(cur)
239
+ semver(lat)
240
+ c = cur.join
241
+ l = lat.join
242
+ styles = []
243
+ data.each do |val|
244
+ break unless (req = /(>=?|=|~>|!=|<=?) (#{Regexp.escape(val.join)})/.match(line))
245
+
246
+ v = semver(val).join
247
+ case req[1]
248
+ when '>', '>='
244
249
  if semmajor(cur, lat)
245
250
  styles = %i[green bold]
246
251
  major += 1
247
252
  else
253
+ styles[0] = cur[2] == lat[2] ? :yellow : :green
254
+ end
255
+ when '<', '<='
256
+ if c <= v
257
+ if semmajor(cur, lat)
258
+ styles = %i[green bold]
259
+ major += 1
260
+ else
261
+ styles[0] = :yellow
262
+ end
263
+ end
264
+ when '!='
265
+ if c == l
266
+ styles.clear
267
+ else
268
+ styles[1] = :bold
269
+ end
270
+ when '~>'
271
+ if c < v && cur[0] == val[0] && !semmajor(cur, val)
248
272
  styles[0] = :yellow
273
+ elsif semmajor(val, lat)
274
+ styles[1] = :underline
275
+ else
276
+ styles[1] = :bold
249
277
  end
250
278
  end
251
- when '!='
252
- if c == l
253
- styles.clear
254
- else
255
- styles[1] = :bold
256
- end
257
- when '~>'
258
- if c < v && cur[0] == val[0] && !semmajor(cur, val)
259
- styles[0] = :yellow
260
- elsif semmajor(lat, val)
261
- styles[1] = :underline
262
- else
263
- styles[1] = :bold
264
- end
265
279
  end
266
- end
267
- unless styles.empty?
268
- case styles[0]
269
- when :green
270
- line = sub_style(line, pat: /^(\S+)(.+)$/, styles: theme[styles[1] == :bold ? :major : :active])
271
- found += 1
272
- when :yellow
273
- found += 1
280
+ unless styles.empty?
281
+ case styles[0]
282
+ when :green
283
+ line = sub_style(line, pat: /^(\S+)(.+)$/, styles: theme[styles[1] == :bold ? :major : :active])
284
+ found += 1
285
+ when :yellow
286
+ found += 1
287
+ end
288
+ styles = styles.compact
289
+ .map { |s| s == :green || s == :yellow ? color(s) : s }
290
+ .flatten
291
+ line = sub_style(line, pat: /^((?:\S+\s+){2})(#{Regexp.escape(l)})(.+)$/, styles: styles,
292
+ index: 2)
274
293
  end
275
- line = sub_style(line, pat: /^((?:\S+\s+){2})(#{Regexp.escape(l)})(.+)$/,
276
- styles: styles.compact, index: 2)
277
294
  end
278
295
  end
296
+ puts "#{start.to_s.rjust(2)}. #{line}"
297
+ start += 1
298
+ elsif line =~ /^Gem /
299
+ print_item banner if banner
300
+ unless stdin?
301
+ puts print_footer(" # #{line.chomp}", reverse: true, sub: [
302
+ { pat: /^(.+)(Gem)(.+)$/, styles: theme[:header], index: 2 },
303
+ { pat: /^(.+)(Latest)(.+)$/, styles: theme[:header], index: 2 }
304
+ ])
305
+ end
306
+ start += 1
279
307
  end
280
- puts "#{start.to_s.rjust(2)}. #{line}"
281
- start += 1
282
- elsif line =~ /^Gem /
283
- unless pipe?
284
- puts print_footer(" # #{line.chomp}", reverse: true, sub: [
285
- { pat: /^(.+)(Gem)(.+)$/, styles: theme[:header], index: 2 },
286
- { pat: /^(.+)(Latest)(.+)$/, styles: theme[:header], index: 2 }
287
- ])
288
- end
289
- start += 1
308
+ end
309
+ if found > 0
310
+ puts print_footer(empty_status('Updates are available', 'major', major, always: true))
311
+ elsif start == 0
312
+ puts 'No updates were found'
290
313
  end
291
314
  end
292
- if found > 0
293
- puts print_footer(empty_status('Updates are available', 'major', major, always: true))
294
- elsif start == 0
295
- puts 'No updates were found'
296
- end
297
- store_pwd true
298
315
  end
299
316
 
300
317
  def update(flag, opts: [])
@@ -322,12 +339,8 @@ module Squared
322
339
  run_s "bundle #{flag} #{cmd.join(' ')}"
323
340
  end
324
341
 
325
- def rake(cmd)
326
- if cmd.empty?
327
- run_s 'rake'
328
- else
329
- cmd.each { |val| run_s "rake #{val}" }
330
- end
342
+ def rake(*cmd)
343
+ run_s(cmd.empty? ? 'rake' : cmd.map { |val| "rake #{val}" })
331
344
  end
332
345
 
333
346
  def rakefile
@@ -335,8 +348,22 @@ module Squared
335
348
  base_path(file) if file
336
349
  end
337
350
 
351
+ def variable_set(key, *val, **)
352
+ case key
353
+ when :gemfile
354
+ @gemfile = base_path(val.first)
355
+ else
356
+ super
357
+ end
358
+ end
359
+
360
+ def variable_all
361
+ ret = super + VAR_SET
362
+ ret.freeze
363
+ end
364
+
338
365
  def copy?
339
- return true if @copy.is_a?(::String) || @copy&.fetch(:gemdir, nil)
366
+ return true if super || (@copy.is_a?(::Hash) && copy.fetch(:gemdir, nil))
340
367
  return gemdir? if @gemdir
341
368
 
342
369
  if @version && (val = ENV['GEM_HOME'])
@@ -346,33 +373,27 @@ module Squared
346
373
  return false unless @autodetect
347
374
 
348
375
  unsafe = ->(hint) { raise_error('failed to parse', hint: hint) }
349
- begin
350
- out = `gem -C #{shell_quote(path)} list --local -d #{project}`
351
- data = /#{Regexp.escape(project)} \(([^)]+)\)/.match(out)
352
- unsafe.('version') unless data
353
- ver = data[1].split(/\s*,\s*/)
354
- if @version
355
- ver.unshift(@version)
356
- ver.uniq!
357
- end
358
- ver.each do |v|
359
- data = /\(#{Regexp.escape(v)}(?:,[^)]+|\b)\):([^\n]+)/.match(out)
360
- next unless data
361
-
362
- log.warn "using version #{v} (given #{@version})" if @version && @version != v
363
- @version = v
364
- break
365
- end
366
- unsafe.('path') unless data
367
- @gemdir = Pathname.new(data[1].strip).join(gempath)
368
- rescue StandardError => e
369
- log.error e
370
- @version = nil
371
- @gemdir = nil
372
- @autodetect = false
373
- else
374
- gemdir?
376
+ out = `gem -C #{shell_quote(path)} list --local -d #{project}`
377
+ data = /#{Regexp.escape(project)} \(([^)]+)\)/.match(out)
378
+ unsafe.('version') unless data
379
+ ver = data[1].split(/\s*,\s*/)
380
+ ver.unshift(@version).uniq! if @version
381
+ ver.each do |v|
382
+ next unless (data = /\(#{Regexp.escape(v)}(?:,[^)]+|\b)\):([^\n]+)/.match(out))
383
+
384
+ log.warn "using version #{v} (given #{@version})" if @version && @version != v
385
+ @version = v
386
+ break
375
387
  end
388
+ unsafe.('path') unless data
389
+ @gemdir = Pathname.new(data[1].strip).join(gempath)
390
+ rescue StandardError => e
391
+ log.error e
392
+ @version = nil
393
+ @gemdir = nil
394
+ @autodetect = false
395
+ else
396
+ gemdir?
376
397
  end
377
398
 
378
399
  def outdated?
@@ -400,14 +421,6 @@ module Squared
400
421
  end
401
422
  end
402
423
 
403
- def append_repeat(flag, opts)
404
- opts.each { |val| @session << "--#{flag}=#{shell_escape(val, quote: true)}" }
405
- end
406
-
407
- def append_value(opts)
408
- opts.each { |val| @session << val }
409
- end
410
-
411
424
  def gem_session(*cmd)
412
425
  ret = session('gem', *cmd)
413
426
  if (val = env('GEM_CONFIG_FILE'))
@@ -6,8 +6,23 @@ module Squared
6
6
  include Common
7
7
  include Format
8
8
  include System
9
+ include Utils
9
10
 
10
- def repo(url, manifest = 'latest', run: nil, dev: nil, prod: nil, ref: @ref, group: @group)
11
+ class << self
12
+ def read_manifest(path)
13
+ require 'rexml/document'
14
+ return unless (file = path.join('.repo/manifest.xml')).exist?
15
+
16
+ doc = REXML::Document.new(file.read)
17
+ doc.elements['manifest/include'].attributes['name']&.sub('.xml', '')
18
+ end
19
+
20
+ def empty?(dir)
21
+ dir.empty? || (dir.children.size == 1 && dir.join(dir.children.first).to_s == __FILE__)
22
+ end
23
+ end
24
+
25
+ def repo(url, manifest = 'latest', run: nil, script: nil, dev: nil, prod: nil, ref: @ref, group: @group)
11
26
  @home = if (val = env('REPO_HOME'))
12
27
  home = Pathname.new(val)
13
28
  if main == home.basename.to_s
@@ -16,71 +31,79 @@ module Squared
16
31
  @root = nil unless home.directory?
17
32
  elsif !@root.exist?
18
33
  @root.mkpath
19
- elsif !install?
20
- @root = nil unless confirm_install
34
+ elsif !repo_install?
35
+ @root = nil unless repo_confirm
21
36
  end
22
37
  end
23
38
  raise_error('REPO_HOME', val, hint: 'invalid') unless @root
24
-
25
39
  home.realdirpath
26
40
  elsif (val = env('REPO_ROOT'))
27
41
  @root = Pathname.new(val).realdirpath
28
42
  if !@root.exist?
29
43
  @root.mkpath
30
- elsif !install?
31
- raise_error('REPO_ROOT', val, hint: 'exist') unless confirm_install
44
+ elsif !repo_install?(parent: true)
45
+ raise_error('REPO_ROOT', val, hint: 'exist') unless repo_confirm
32
46
  end
33
47
  @root.join(main).realdirpath
34
48
  else
35
- install?(pwd = @home) ? pwd.join(main) : pwd
49
+ repo_install?(@home) ? @home.join(main) : @home
36
50
  end
37
51
  @root = @home.parent
38
52
  @manifest_url = url
39
53
  @manifest = manifest
40
- set_ref = lambda do
41
- if group
42
- @script[:group][:_] = group.to_s
43
- elsif ref
44
- @script[:ref][:_] = ref.to_sym
45
- end
46
- end
54
+ data = script_obj
47
55
  if repo?
48
- @script[:build] = case (val = env('REPO_BUILD'))
49
- when 'verbose'
50
- @verbose = true
51
- run.is_a?(String) ? "#{run}:verbose" : run
52
- when 'silent'
53
- @verbose = false
54
- @warning = false
55
- run
56
- else
57
- val || run
58
- end
59
- @script[:dev] = bool_match(env('REPO_DEV'), dev)
60
- @script[:prod] = bool_match(env('REPO_PROD'), prod)
61
- if (val = env('REPO_GROUP'))
62
- @script[:group][:_] = val.to_s
63
- @script[:env] = true
64
- elsif (val = env('REPO_REF'))
65
- @script[:ref][:_] = val.to_sym
66
- @script[:env] = true
56
+ if script
57
+ if (val = env('REPO_BUILD'))
58
+ data[:script] = case val
59
+ when 'verbose'
60
+ @verbose = 1
61
+ if script.is_a?(::Array)
62
+ script[0] = "#{script[0]}:verbose"
63
+ script
64
+ else
65
+ "#{script}:verbose"
66
+ end
67
+ when 'silent'
68
+ @verbose = false
69
+ @warning = false
70
+ script
71
+ else
72
+ val
73
+ end
74
+ data[:env] = true
75
+ else
76
+ data[:script] = script
77
+ end
78
+ elsif (val = env('REPO_BUILD'))
79
+ data[:run] = val
80
+ data[:env] = true
67
81
  else
68
- set_ref
82
+ data[:run] = run
83
+ end
84
+ data[:global] = true
85
+ data[:dev] = env_match('REPO_DEV', dev, suffix: @envname)
86
+ data[:prod] = env_match('REPO_PROD', prod, suffix: @envname)
87
+ if (val = env('REPO_GROUP'))
88
+ script_set(data, group: val.split(','))
89
+ found = true
90
+ end
91
+ if (val = env('REPO_REF'))
92
+ script_set(data, ref: val.split(','))
93
+ found = true
69
94
  end
70
- @warning = case env('REPO_WARN')
71
- when '0'
72
- false
73
- when '1'
74
- true
75
- else
76
- @warning && !empty?(@root)
77
- end
95
+ script_set(data, group: group, ref: ref) unless found
96
+ @warning = env_match('REPO_WARN', @warning && !Repo.empty?(@root), suffix: @envname) != false
78
97
  @extensions << :__repo__
79
- else
80
- @script[:build] = run
81
- @script[:dev] = dev
82
- @script[:prod] = prod
83
- set_ref
98
+ elsif script || run
99
+ if script
100
+ data[:script] = script
101
+ else
102
+ data[:run] = run
103
+ end
104
+ data[:dev] = dev
105
+ data[:prod] = prod
106
+ script_set(data, group: group, ref: ref)
84
107
  end
85
108
  self
86
109
  end
@@ -90,7 +113,7 @@ module Squared
90
113
  def __repo__(**kwargs)
91
114
  kwargs.delete(:parallel) if env('REPO_SYNC', ignore: '0')
92
115
 
93
- branch = env('REPO_MANIFEST') || read_manifest
116
+ branch = env('REPO_MANIFEST') || Repo.read_manifest(root)
94
117
  target = branch || @manifest
95
118
  stage = nil
96
119
  failfast = true
@@ -115,12 +138,9 @@ module Squared
115
138
  end
116
139
  end
117
140
  status = lambda do |val, alt = nil|
118
- ver = branch || alt
119
- if ver
120
- message(@prefix || '', 'repo', val.sub('{0}', 'opts*=force,rebase,detach,gc,no-update,no-fail'), ver)
121
- else
122
- 'inactive'
123
- end
141
+ return 'inactive' unless (ver = branch || alt)
142
+
143
+ message(@prefix || '', 'repo', val.sub('{0}', 'opts*=force,rebase,detach,gc,no-update,no-fail'), ver)
124
144
  end
125
145
 
126
146
  namespace task_name('repo') do |repo|
@@ -130,12 +150,12 @@ module Squared
130
150
  stage ||= 'all'
131
151
  repo['sync'].invoke
132
152
  @project.select do |_, proj|
133
- next false unless proj.enabled? && proj.ref?(Project::Base.ref)
153
+ next unless proj.enabled?(Project::Base.ref)
134
154
 
135
155
  proj.depend if proj.depend?
136
156
  proj.build?
137
157
  end
138
- .each_value { |proj| proj.has?(:dev) ? proj.refresh : proj.build }
158
+ .each_value { |proj| proj.has?('dev') ? proj.refresh : proj.build }
139
159
  end
140
160
 
141
161
  desc status.("init[manifest?=#{target},{0}]", target)
@@ -166,51 +186,25 @@ module Squared
166
186
  end
167
187
  end
168
188
 
169
- def read_manifest
170
- require 'rexml/document'
171
- return unless (file = root_path('.repo/manifest.xml')).exist?
172
-
173
- doc = REXML::Document.new(file.read)
174
- doc.elements['manifest/include'].attributes['name']&.sub('.xml', '')
175
- end
176
-
177
- def confirm_install
189
+ def repo_confirm
178
190
  return false unless root.directory?
179
191
 
180
192
  path = sub_style(root, styles: theme[:inline])
181
193
  @override = confirm(
182
194
  "#{log_title(:warn)} \"#{path}\" is not empty. Continue with installation? [y/N] ",
183
- default: 'N',
195
+ 'N',
184
196
  timeout: env('REPO_TIMEOUT', 15, ignore: '0')
185
197
  )
186
198
  end
187
199
 
188
- def bool_match(val, pat)
189
- case val
190
- when nil, ''
191
- pat
192
- when '0'
193
- false
194
- when '1'
195
- true
196
- else
197
- Regexp.new(val)
198
- end
199
- end
200
-
201
200
  def repo?
202
- !@manifest_url.nil? && (install? || !!@override)
203
- end
204
-
205
- def empty?(dir)
206
- dir.empty? || (dir.children.size == 1 && dir.join(dir.children.first).to_s == __FILE__)
201
+ !@manifest_url.nil? && (repo_install? || !!@override)
207
202
  end
208
203
 
209
- def install?(dir = root)
210
- return true if empty?(dir) || dir.join('.repo').directory?
211
- return false unless dir == root && env('REPO_HOME').nil? && !env('REPO_ROOT').nil?
204
+ def repo_install?(dir = root, parent: false)
205
+ return true if Repo.empty?(dir) || dir.join('.repo').directory?
212
206
 
213
- root.children.none? { |path| path.directory? && path.basename.to_s[0] != '.' && path.to_s != home.to_s }
207
+ parent && root.children.none? { |ent| ent.directory? && ent.basename.to_s[0] != '.' && ent.to_s != home.to_s }
214
208
  end
215
209
  end
216
210
 
@@ -46,7 +46,7 @@ module Squared
46
46
  end
47
47
 
48
48
  def __set__(key)
49
- self[key.to_sym] ||= []
49
+ @data[key.to_sym] ||= []
50
50
  end
51
51
 
52
52
  def __populate__(proj)
@@ -54,11 +54,13 @@ module Squared
54
54
 
55
55
  group, parent, id = @session.values
56
56
  ws = proj.workspace
57
- each do |key, items|
57
+ ref = Project::Base.ref
58
+ @data.each do |key, items|
58
59
  task = "#{proj.name}:#{key}"
59
- unless include?(key) ? proj.has?(key) || ws.task_defined?(key) : ws.task_extend?(proj, key)
60
- alt = TASK_ALIAS[key]
61
- next unless alt && (task = "#{proj.name}:#{alt}") && self[alt].include?(task)
60
+ unless (base = include?(key)) ? proj.has?(key, ref) : ws.task_extend?(proj, key)
61
+ next if (base && !proj.ref?(ref)) || (alt = TASK_ALIAS[key]).nil?
62
+
63
+ task = "#{proj.name}:#{alt}"
62
64
  end
63
65
  next unless ws.task_defined?(task)
64
66
 
@@ -77,9 +79,9 @@ module Squared
77
79
 
78
80
  def __build__(parallel: [], **)
79
81
  group, parent, id = @session.values
80
- merge!(parent) if id.uniq.size > 1
81
- merge!(group)
82
- each do |key, items|
82
+ @data.merge!(parent) if id.uniq.size > 1
83
+ @data.merge!(group)
84
+ @data.each do |key, items|
83
85
  next if items.empty?
84
86
 
85
87
  key = @workspace.task_name(name = key.to_s)
@@ -103,14 +105,14 @@ module Squared
103
105
  end
104
106
  TASK_ALIAS.each_key do |key|
105
107
  suf = ":#{key}"
106
- self[key].clear unless self[key].any? { |val| val.end_with?(suf) }
108
+ @data[key].clear unless @data[key].any? { |val| val.end_with?(suf) }
107
109
  end
108
110
  @multiple += sync
109
111
  @session = nil
110
112
  end
111
113
 
112
114
  def some?(key)
113
- !key.nil? && key?(key = key.to_sym) && !self[key].empty?
115
+ @data.key?(key) && !@data[key].empty?
114
116
  end
115
117
 
116
118
  def include?(key)
@@ -136,15 +138,15 @@ module Squared
136
138
  private
137
139
 
138
140
  def method_missing(key, *)
139
- raise NoMethodError, key unless key?(key)
141
+ raise NoMethodError, key unless @data.key?(key)
140
142
 
141
- self[key]
143
+ @data[key]
142
144
  end
143
145
 
144
146
  def already_invoked?(list, val)
145
147
  return list.include?(val) && Common::Task.invoked?(val) if val
146
148
 
147
- ::Rake::Task.tasks.any? { |item| item.already_invoked && list.include?(item.name) }
149
+ ::Rake::Task.tasks.any? { |obj| obj.already_invoked && list.include?(obj.name) }
148
150
  end
149
151
  end
150
152
  end