simonmenke-gm 0.0.1 → 0.0.2

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.
data/lib/gm.rb CHANGED
@@ -10,3 +10,5 @@ end
10
10
 
11
11
  require File.dirname(__FILE__)+'/gm/app'
12
12
  require File.dirname(__FILE__)+'/gm/configuration_pass'
13
+ require File.dirname(__FILE__)+'/gm/configuration_pass_queue'
14
+ require File.dirname(__FILE__)+'/gm/dsl'
data/lib/gm/app.rb CHANGED
@@ -5,8 +5,18 @@ module GM
5
5
  class App
6
6
  include Singleton
7
7
 
8
+ attr_accessor :configuration_passes
9
+
8
10
  COMMANDS = %w( help build spec install clean )
9
11
 
12
+ def initialize
13
+ @configuration_passes = Hash.new { |h, k| h[k] = {} }
14
+ end
15
+
16
+ def exclude_pass(name, fase=:normal)
17
+ @configuration_passes[fase.to_sym].delete(name.to_sym)
18
+ end
19
+
10
20
  def parse_options
11
21
  @command = ARGV.shift unless ARGV.empty?
12
22
  @command = nil unless COMMANDS.include? @command
@@ -57,7 +67,7 @@ module GM
57
67
 
58
68
  def load_passes
59
69
  Dir.glob(File.dirname(__FILE__)+'/../passes/*.rb') do |path|
60
- require path
70
+ GM::DSL.load_pass path
61
71
  end
62
72
  end
63
73
 
@@ -1,59 +1,6 @@
1
1
 
2
2
  module GM
3
3
 
4
- class << self
5
- attr_accessor :configuration_passes
6
- end
7
- self.configuration_passes = Hash.new { |h, k| h[k] = {} }
8
-
9
- def self.exclude_pass(name, fase=:normal)
10
- self.configuration_passes[fase.to_sym].delete(name.to_sym)
11
- end
12
-
13
- module DSL
14
- def init_pass(name, dependencies=[], &proc)
15
- ConfigurationPass.new(name, dependencies, &proc).register(:init)
16
- end
17
- def pre_pass(name, dependencies=[], &proc)
18
- ConfigurationPass.new(name, dependencies, &proc).register(:pre)
19
- end
20
- def pass(name, dependencies=[], &proc)
21
- ConfigurationPass.new(name, dependencies, &proc).register(:normal)
22
- end
23
- def post_pass(name, dependencies=[], &proc)
24
- ConfigurationPass.new(name, dependencies, &proc).register(:post)
25
- end
26
- end
27
-
28
- class ConfigurationPassQueue
29
- attr_accessor :queue
30
- attr_accessor :passes
31
- attr_accessor :processed_passes
32
-
33
- def initialize(fase)
34
- @passes = GM.configuration_passes[fase.to_sym].dup
35
- @processed_passes = []
36
- @queue = @passes.values
37
- end
38
-
39
- def run(spec)
40
- until @queue.empty?
41
- @queue.each do |pass|
42
- if run_pass(pass, spec)
43
- @queue.delete(pass)
44
- end
45
- end
46
- end
47
- end
48
-
49
- def run_pass(pass, spec)
50
- return false unless (pass.dependencies - @processed_passes).empty?
51
- pass.run spec
52
- @processed_passes << pass.name
53
- return true
54
- end
55
- end
56
-
57
4
  class ConfigurationPass
58
5
 
59
6
  attr_accessor :proc
@@ -67,7 +14,7 @@ module GM
67
14
  end
68
15
 
69
16
  def register(fase)
70
- GM.configuration_passes[fase.to_sym][@name] = self
17
+ GM::App.instance.configuration_passes[fase.to_sym][@name] = self
71
18
  end
72
19
 
73
20
  def run(spec)
@@ -0,0 +1,33 @@
1
+
2
+ module GM
3
+
4
+ class ConfigurationPassQueue
5
+ attr_accessor :queue
6
+ attr_accessor :passes
7
+ attr_accessor :processed_passes
8
+
9
+ def initialize(fase)
10
+ @passes = GM::App.instance.configuration_passes[fase.to_sym].dup
11
+ @processed_passes = []
12
+ @queue = @passes.values
13
+ end
14
+
15
+ def run(spec)
16
+ until @queue.empty?
17
+ @queue.each do |pass|
18
+ if run_pass(pass, spec)
19
+ @queue.delete(pass)
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ def run_pass(pass, spec)
26
+ return false unless (pass.dependencies - @processed_passes).empty?
27
+ pass.run spec
28
+ @processed_passes << pass.name
29
+ return true
30
+ end
31
+ end
32
+
33
+ end
data/lib/gm/dsl.rb ADDED
@@ -0,0 +1,31 @@
1
+
2
+ module GM
3
+
4
+ module DSL
5
+ def load_pass(path)
6
+ if File.exist? path
7
+ mod = Module.new
8
+ mod.send :extend, DSL
9
+ mod.module_eval IO.read(path)
10
+ end
11
+ end
12
+ module_function :load_pass
13
+
14
+ def init_pass(name, dependencies=[], &proc)
15
+ ConfigurationPass.new(name, dependencies, &proc).register(:init)
16
+ end
17
+ def pre_pass(name, dependencies=[], &proc)
18
+ ConfigurationPass.new(name, dependencies, &proc).register(:pre)
19
+ end
20
+ def pass(name, dependencies=[], &proc)
21
+ ConfigurationPass.new(name, dependencies, &proc).register(:normal)
22
+ end
23
+ def post_pass(name, dependencies=[], &proc)
24
+ ConfigurationPass.new(name, dependencies, &proc).register(:post)
25
+ end
26
+ def exclude_pass(name, fase=:normal)
27
+ GM::App.instance.exclude_pass(name, fase)
28
+ end
29
+ end
30
+
31
+ end
@@ -1,4 +1,3 @@
1
- include GM::DSL
2
1
 
3
2
  pre_pass :configatron_defaults do |spec|
4
3
 
@@ -11,6 +10,12 @@ pre_pass :configatron_defaults do |spec|
11
10
  },
12
11
  :dependencies => [],
13
12
 
13
+ :rdoc => {
14
+ :enabled => true,
15
+ :extra_files => [],
16
+ :options => []
17
+ },
18
+
14
19
  :author => {
15
20
  :name => nil,
16
21
  :email => nil
@@ -55,7 +60,7 @@ end
55
60
  pre_pass :configatron_exclude_passes, :configatron_local do |s|
56
61
  c = configatron
57
62
  c.excluded_passes.each do |pass|
58
- GM.exclude_pass(pass)
63
+ exclude_pass(pass)
59
64
  end
60
65
  end
61
66
 
@@ -71,6 +76,10 @@ pass :configatron do |s|
71
76
 
72
77
  s.rubyforge_project = c.rubyforge.project
73
78
 
79
+ s.has_rdoc = c.rdoc.enabled
80
+ s.extra_rdoc_files = c.rdoc.extra_files
81
+ s.rdoc_options = c.rdoc.options
82
+
74
83
  c.dependencies.each do |dependency|
75
84
  gem, requirement = dependency.strip.split(/\s+/, 2)
76
85
  s.add_dependency gem.strip, requirement.strip
@@ -1,8 +1,8 @@
1
- include GM::DSL
2
1
 
3
2
  init_pass :defaults do |spec|
4
3
 
5
4
  spec.platform = Gem::Platform::RUBY
6
5
  spec.files = []
6
+ spec.test_files = []
7
7
 
8
8
  end
@@ -1,4 +1,3 @@
1
- include GM::DSL
2
1
 
3
2
  pass :executables do |spec|
4
3
 
data/lib/passes/files.rb CHANGED
@@ -1,4 +1,3 @@
1
- include GM::DSL
2
1
 
3
2
  pass :files do |spec|
4
3
 
data/lib/passes/github.rb CHANGED
@@ -1,4 +1,3 @@
1
- include GM::DSL
2
1
 
3
2
  post_pass :emulate_github do |spec|
4
3
 
data/lib/passes/rails.rb CHANGED
@@ -1,7 +1,7 @@
1
- include GM::DSL
2
1
 
3
2
  pass :rails do |spec|
4
3
 
5
4
  spec.files += Dir.glob('rails/init.rb')
5
+ spec.files += Dir.glob('tasks/*.rake')
6
6
 
7
7
  end
@@ -0,0 +1,6 @@
1
+
2
+ pass :specs do |spec|
3
+
4
+ spec.test_files += Dir.glob('spec/**/*.rb')
5
+
6
+ end
@@ -0,0 +1,6 @@
1
+
2
+ pass :tests do |spec|
3
+
4
+ spec.test_files += Dir.glob('test/**/*.rb')
5
+
6
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simonmenke-gm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Menke
@@ -33,6 +33,8 @@ files:
33
33
  - bin/gm
34
34
  - lib/gm/app.rb
35
35
  - lib/gm/configuration_pass.rb
36
+ - lib/gm/configuration_pass_queue.rb
37
+ - lib/gm/dsl.rb
36
38
  - lib/gm.rb
37
39
  - lib/passes/configatron.rb
38
40
  - lib/passes/defaults.rb
@@ -40,8 +42,10 @@ files:
40
42
  - lib/passes/files.rb
41
43
  - lib/passes/github.rb
42
44
  - lib/passes/rails.rb
45
+ - lib/passes/specs.rb
46
+ - lib/passes/tests.rb
43
47
  - README.textile
44
- has_rdoc: false
48
+ has_rdoc: true
45
49
  homepage: http://github.com/simonmenke/gm
46
50
  post_install_message:
47
51
  rdoc_options: []