singularity_dsl 1.2.9 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDYwYWE4MmNhN2ZkNzEzYWFiNmIzYmM0MjExZWNkY2U5YWNiZjA3Yg==
4
+ ZmFiYjBhODAxOGNjZmQxYzMwNmMyZjM4ODk0ODI1ZjE2MTBjZjgxOQ==
5
5
  data.tar.gz: !binary |-
6
- YmMwNDYyYWQ4NGY5ZDliNjZhYzZhZjg1Y2NhNjA1ZjY1MjI2Njg1OQ==
6
+ YjBhZmUzODYxYTEzZGNjNmViNzdmYWFjNjIwYWU2Yzc5ZDg5MTdkYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzljY2JlZWVkZDVkMjBmN2Q5ZTA2MDU0ZTY1MWNmMzhkNWNiNTM1ZTUyOTlh
10
- NjZhMDZiNzZkYjNhNTMyNmM4NGI2NTg4NzJjNDY3ZjU1ZjYyOWU4N2NjYzM0
11
- NjA3M2UyZDZiYmFkZmVmOWQyMGU5MTJhYTAzYjViZDdlODMxODQ=
9
+ MDEyMmI2OTE5YzFlMTRmNGNkYzYwM2RhNGZmZGMzOWE0YzY1MDYxZDIwOTM3
10
+ MWM5OWJjMjY0MjZjN2RjNDEzNzViMWU2MTNkODJmMTUwYmZlYTkwM2IyMjUy
11
+ M2QwNjJjMjRjNTIyMTgyYjAxYzk3NGZmMmZhZDEzM2FlNzk5YjY=
12
12
  data.tar.gz: !binary |-
13
- OGM1MjY1MjFkMDkwY2U2ZjRkODU4YTY2NjkyOGQyYmM0YTc3M2I2NzQ2MWU4
14
- YjFiNmRhOWI3ZGYyMDk3ZDRhZGVlMDgyNGQyOTMxOTExZWM4ODFmYjA3ZWY1
15
- MmE4YjhmZjI1ZDhhNWE4NjRmMWUyMGQ5OWVlNGQ0YTk3MTgxMTM=
13
+ OWU2NmE3NjUxZTk0MDNiNGViZTI1YWE3MTVkZDhmYTE2YzNmYzk1NmRkZTZj
14
+ NTA5OTQ3YjU3NjcwNzY2MmUxN2I5ZmViZjQ4YTYxN2UxNmQ5MWU1NGY1MjNl
15
+ ZThmMDI0ZjEyN2FhOWQxYjI2YWQyMWI5NDcxZjU2ZWJmODI1NGQ=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- singularity_dsl (1.2.9)
4
+ singularity_dsl (1.3.0)
5
5
  mixlib-shellout (~> 1.4)
6
6
  rainbow (~> 2.0.0)
7
7
  rake (~> 10.3)
@@ -5,5 +5,35 @@ if RUBY_PLATFORM =~ /mswin|mingw32|windows/
5
5
  throw 'Sorry, wont run on mswin|mingw32|windows'
6
6
  end
7
7
 
8
+ # SingularityDsl Module
9
+ # logic for task -> file mapping
10
+ # ==== WARNING: HERE THERE BE DRAGONS ====
11
+ module SingularityDsl
12
+ class << self
13
+ attr_reader :task_map
14
+ end
15
+
16
+ @task_map = {}
17
+
18
+ def self.map_task_file(obj, file)
19
+ @task_map[map_key obj] = file
20
+ end
21
+
22
+ def self.task_file(obj)
23
+ return false unless @task_map.key? map_key(obj)
24
+ @task_map[map_key obj]
25
+ end
26
+
27
+ def self.reset_map
28
+ @task_map = {}
29
+ end
30
+
31
+ private
32
+
33
+ def self.map_key(obj)
34
+ obj.class.to_s.to_sym
35
+ end
36
+ end
37
+
8
38
  require 'singularity_dsl/application'
9
39
  require 'singularity_dsl/dsl/components'
@@ -34,8 +34,14 @@ module SingularityDsl
34
34
 
35
35
  def load_tasks_in_path(path)
36
36
  base_tasks = task_list
37
+ updated_tasks = task_list
37
38
  files_in_path(path, 'rb').each do |file|
38
39
  SingularityDsl.module_eval(::File.read file)
40
+ # keep a list of class => file mappings
41
+ (task_list - updated_tasks).each do |klass|
42
+ SingularityDsl.map_task_file klass, file
43
+ end
44
+ updated_tasks = task_list
39
45
  end
40
46
  load_tasks(task_list - base_tasks)
41
47
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # version const for gem
4
4
  module SingularityDsl
5
- VERSION = '1.2.9'
5
+ VERSION = '1.3.0'
6
6
  end
@@ -40,6 +40,9 @@ describe 'Dsl' do
40
40
  path = ::File.dirname(__FILE__) + '/stubs/tasks'
41
41
  dsl.load_tasks_in_path path
42
42
  expect(dsl.singleton_methods).to include :dummytask
43
+ # IMPORTANT: do this to prevent the singleton
44
+ # from having this task in the map
45
+ SingularityDsl.reset_map
43
46
  end
44
47
  end
45
48
  end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ require 'singularity_dsl'
4
+
5
+ # WARNING: HERE THERE BE DRAGONS
6
+ describe 'SingularityDsl' do
7
+ after(:all) { SingularityDsl.reset_map }
8
+
9
+ context '#map_task_file' do
10
+ it 'saves class as sym, maps it to file' do
11
+ SingularityDsl.map_task_file 'string', 'foo'
12
+ expect(SingularityDsl.task_map).to include(String: 'foo')
13
+ end
14
+ end
15
+
16
+ context '#task_file' do
17
+ it 'returns false when no such class' do
18
+ expect(SingularityDsl.task_file 1).to eql false
19
+ end
20
+
21
+ it 'returns the correct mapping for a class' do
22
+ # THIS VALUE IS FROM THE RUN IN '#map_task_file'
23
+ expect(SingularityDsl.task_file 'foo').to eql('foo')
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: singularity_dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.9
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - chr0n1x
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-31 00:00:00.000000000 Z
11
+ date: 2014-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-shellout
@@ -192,6 +192,7 @@ files:
192
192
  - spec/singularity_dsl/runstate_spec.rb
193
193
  - spec/singularity_dsl/task_spec.rb
194
194
  - spec/singularity_dsl/tasks/shell_task_spec.rb
195
+ - spec/singularity_dsl_spec.rb
195
196
  homepage: ''
196
197
  licenses:
197
198
  - MIT
@@ -231,3 +232,4 @@ test_files:
231
232
  - spec/singularity_dsl/runstate_spec.rb
232
233
  - spec/singularity_dsl/task_spec.rb
233
234
  - spec/singularity_dsl/tasks/shell_task_spec.rb
235
+ - spec/singularity_dsl_spec.rb