gator 0.0.21.pre → 0.0.22.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/Gemfile +3 -1
  2. data/Rakefile +3 -6
  3. data/VERSION +1 -1
  4. data/bin/gator +2 -3
  5. data/gator.gemspec +52 -30
  6. data/lib/gator.rb +6 -8
  7. data/lib/gator/core.rb +19 -0
  8. data/lib/gator/core/application/application.rb +41 -0
  9. data/lib/gator/core/application/application_configuration.rb +11 -0
  10. data/lib/gator/core/command/act_as_command.rb +40 -0
  11. data/lib/gator/core/command/act_as_command_collection.rb +63 -0
  12. data/lib/gator/core/command/command.rb +20 -0
  13. data/lib/gator/{task.rb → core/command/task.rb} +1 -4
  14. data/lib/gator/core/configuration/act_as_configuration.rb +30 -0
  15. data/lib/gator/core/configuration/configuration.rb +5 -0
  16. data/lib/gator/core/io/paths.rb +21 -0
  17. data/lib/gator/core/io/project_file_locator.rb +28 -0
  18. data/lib/gator/core/io/ruby_file_loader.rb +21 -0
  19. data/lib/gator/core/io/sandbox.rb +9 -0
  20. data/lib/gator/{project.rb → core/project/layout.rb} +3 -44
  21. data/lib/gator/core/project/project.rb +21 -0
  22. data/lib/gator/plugins/generators.rb +5 -0
  23. data/lib/gator/{generators/generator.rb → plugins/generators/act_as_template_generator.rb} +1 -5
  24. data/lib/gator/{commands/generate.rb → plugins/generators/generate_command.rb} +1 -1
  25. data/lib/gator/plugins/generators/generator.rb +6 -0
  26. data/lib/gator/plugins/scaffolding.rb +4 -0
  27. data/lib/gator/plugins/scaffolding/scaffold_command.rb +62 -0
  28. data/lib/gator/plugins/scaffolding/scaffolding_file_utils.rb +58 -0
  29. data/rake/jeweler.rb +17 -0
  30. data/rake/jeweler_prerelease_tasks.rb +50 -0
  31. data/rake/pre_release_gemspec.rb +80 -0
  32. data/rake/pre_release_to_git.rb +59 -0
  33. data/spec/core/application/application_configuration_spec.rb +21 -0
  34. data/spec/core/application/application_spec.rb +15 -0
  35. data/spec/core/command/command_spec.rb +117 -0
  36. data/spec/core/command/task_spec.rb +95 -0
  37. data/spec/core/configuration/configuration_spec.rb +55 -0
  38. data/spec/core/io/paths_spec.rb +44 -0
  39. data/spec/core/io/sandbox_spec.rb +11 -0
  40. data/spec/core/project/layout_spec.rb +64 -0
  41. data/spec/core/project/project_spec.rb +51 -0
  42. data/spec/fixtures/empty_gator_project/gator.rb +4 -0
  43. data/spec/fixtures/no_gator_file/.empty_directory +0 -0
  44. data/spec/plugins/scaffolding/scaffold_command_spec.rb +75 -0
  45. data/spec/spec_helper.rb +14 -9
  46. metadata +65 -36
  47. data/lib/gator/command.rb +0 -109
  48. data/lib/gator/commands.rb +0 -5
  49. data/lib/gator/commands/project.rb +0 -87
  50. data/lib/gator/config.rb +0 -23
  51. data/lib/gator/generators.rb +0 -1
  52. data/lib/gator/runner.rb +0 -21
  53. data/lib/gator/util.rb +0 -91
  54. data/spec/command_spec.rb +0 -84
  55. data/spec/config_spec.rb +0 -14
  56. data/spec/project_spec.rb +0 -15
  57. data/spec/runner_spec.rb +0 -9
  58. data/spec/task_spec.rb +0 -8
  59. data/spec/util_spec.rb +0 -60
@@ -0,0 +1,51 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+
4
+ describe Gator::Project do
5
+
6
+ before :all do
7
+ @original_pwd = Dir.pwd
8
+ @project_dir = File.expand_path(File.dirname(__FILE__) + '/../../fixtures/empty_gator_project')
9
+ Dir.chdir @project_dir
10
+ end
11
+
12
+ after :all do
13
+ Dir.chdir @original_pwd
14
+ end
15
+
16
+ before :each do
17
+ @project = Gator::Project.new
18
+ end
19
+
20
+ it "should have a name property" do
21
+ @project.should respond_to(:name)
22
+ end
23
+
24
+ it "should set and get the name property" do
25
+ @project.name= "MyProject"
26
+ @project.name.should == "MyProject"
27
+ end
28
+
29
+ it "should have a layout property" do
30
+ @project.should respond_to(:layout)
31
+ end
32
+
33
+ it "should set and get the layout property" do
34
+ layout = Gator::Layout.new
35
+ @project.layout= layout
36
+ @project.layout.should equal layout
37
+ end
38
+
39
+ it "should initially have the default layout" do
40
+ @project.layout.should equal Gator::Layout.default
41
+ end
42
+
43
+ it "should initially have an empty array of template roots" do
44
+ @project.template_roots.should == []
45
+ end
46
+
47
+ it "should append the project base directory to a layout mapping" do
48
+ @project.path(:abc).should == File.join( @project_dir, "abc" )
49
+ end
50
+
51
+ end
@@ -0,0 +1,4 @@
1
+ p gator
2
+ p gator.project
3
+ p gator.environment
4
+ p gator.env
@@ -0,0 +1,75 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Gator::Scaffolding::ScaffoldCommand do
4
+ include Gator::Scaffolding
5
+
6
+ before :each do
7
+ @scaffold_command = ScaffoldCommand.new
8
+ @file_util = @scaffold_command.send(:file_util)
9
+ end
10
+
11
+ it "should have the scaffolds home as source root" do
12
+ ScaffoldCommand.source_root.should == ScaffoldingFileUtils.new.scaffolds_home
13
+ end
14
+
15
+ it "should have the correct definition" do
16
+ definition = { :command => "scaffold", :short => "s",
17
+ :usage => "scaffold TASK", :description => "Set of tasks to manage scaffold templates." }
18
+ ScaffoldCommand.definition.should == definition
19
+ end
20
+
21
+ it "should install a scaffold with path & name" do
22
+ path, name = "myPath", "myName"
23
+ @file_util.should_receive(:install_scaffold).with path, name
24
+ @scaffold_command.install(path, name)
25
+ end
26
+
27
+ it "should install a scaffold with path only" do
28
+ path = "myName"
29
+ @file_util.should_receive(:install_scaffold).with path, nil
30
+ @scaffold_command.install(path)
31
+ end
32
+
33
+ it "should uninstall a scaffold" do
34
+ name = "myProjectName"
35
+ @file_util.should_receive(:delete_scaffold).with name
36
+ @scaffold_command.uninstall(name)
37
+ end
38
+
39
+ it "should create a new directory from a template" do
40
+ name = "MyName"
41
+ scaffold = "MyScaffold"
42
+ @scaffold_command.should_receive(:directory).with @file_util.scaffold_directory(scaffold), File.expand_path(name)
43
+ @scaffold_command.new name, scaffold
44
+ end
45
+
46
+ it "should uninstall all scaffolds" do
47
+ @file_util.should_receive(:delete_all_scaffolds)
48
+ @scaffold_command.wipe
49
+ end
50
+
51
+ it "should uninstall all scaffolds" do
52
+ @file_util.should_receive(:delete_all_scaffolds)
53
+ @scaffold_command.wipe
54
+ end
55
+
56
+ it "should display the installed scaffolds" do
57
+ entries = ["ScaffoldA", "ScaffoldB", "ScaffoldC"]
58
+ @file_util.stub!(:scaffold_entries).and_return entries
59
+ entries.each do |entry|
60
+ @scaffold_command.should_receive(:say).with " #{entry}"
61
+ end
62
+ @scaffold_command.list
63
+ end
64
+
65
+ it "should display 'No templates found.' scaffold directory is empty" do
66
+ @file_util.stub!(:scaffold_entries).and_return []
67
+ @scaffold_command.should_receive(:say).with 'No templates found.', anything
68
+ @scaffold_command.list
69
+ end
70
+
71
+ it "should have a valid file_utils object" do
72
+ @file_util.should be_a Gator::Scaffolding::ScaffoldingFileUtils
73
+ end
74
+
75
+ end
@@ -1,12 +1,17 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- require 'rspec'
4
- require 'gator'
1
+ unless defined?(SpecHelpers)
5
2
 
6
- # Requires supporting files with custom matchers and macros, etc,
7
- # in ./support/ and its subdirectories.
8
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
3
+ require 'simplecov'
4
+ require 'simplecov-rcov'
5
+
6
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
7
+ SimpleCov.root( File.dirname( __FILE__) + '/../' )
8
+ SimpleCov.coverage_dir( File.join( "test", "coverage" ) )
9
+ SimpleCov.start
10
+
11
+ require File.dirname(__FILE__)+'/../lib/gator'
12
+
13
+ RSpec.configure do |config|
14
+ end
9
15
 
10
- RSpec.configure do |config|
11
-
12
16
  end
17
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21.pre
4
+ version: 0.0.22.pre
5
5
  prerelease: 7
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-19 00:00:00.000000000 +02:00
13
- default_executable: gator
12
+ date: 2011-10-12 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: thor
17
- requirement: &2158656960 !ruby/object:Gem::Requirement
16
+ requirement: &2159010900 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: 0.14.6
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *2158656960
24
+ version_requirements: *2159010900
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: rspec
28
- requirement: &2158656340 !ruby/object:Gem::Requirement
27
+ requirement: &2158996000 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ~>
@@ -33,10 +32,10 @@ dependencies:
33
32
  version: 2.3.0
34
33
  type: :development
35
34
  prerelease: false
36
- version_requirements: *2158656340
35
+ version_requirements: *2158996000
37
36
  - !ruby/object:Gem::Dependency
38
37
  name: ci_reporter
39
- requirement: &2158655620 !ruby/object:Gem::Requirement
38
+ requirement: &2158995320 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ~>
@@ -44,10 +43,10 @@ dependencies:
44
43
  version: 1.6.5
45
44
  type: :development
46
45
  prerelease: false
47
- version_requirements: *2158655620
46
+ version_requirements: *2158995320
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: bundler
50
- requirement: &2158654900 !ruby/object:Gem::Requirement
49
+ requirement: &2158993980 !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ~>
@@ -55,10 +54,10 @@ dependencies:
55
54
  version: 1.0.0
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *2158654900
57
+ version_requirements: *2158993980
59
58
  - !ruby/object:Gem::Dependency
60
59
  name: jeweler
61
- requirement: &2158653320 !ruby/object:Gem::Requirement
60
+ requirement: &2158992680 !ruby/object:Gem::Requirement
62
61
  none: false
63
62
  requirements:
64
63
  - - ~>
@@ -66,10 +65,10 @@ dependencies:
66
65
  version: 1.6.2
67
66
  type: :development
68
67
  prerelease: false
69
- version_requirements: *2158653320
68
+ version_requirements: *2158992680
70
69
  - !ruby/object:Gem::Dependency
71
- name: rcov
72
- requirement: &2158652720 !ruby/object:Gem::Requirement
70
+ name: simplecov
71
+ requirement: &2158991160 !ruby/object:Gem::Requirement
73
72
  none: false
74
73
  requirements:
75
74
  - - ! '>='
@@ -77,7 +76,18 @@ dependencies:
77
76
  version: '0'
78
77
  type: :development
79
78
  prerelease: false
80
- version_requirements: *2158652720
79
+ version_requirements: *2158991160
80
+ - !ruby/object:Gem::Dependency
81
+ name: simplecov-rcov
82
+ requirement: &2158989020 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2158989020
81
91
  description: gator - the friendly code-generator
82
92
  email: dominic.graefen@gmail.com
83
93
  executables:
@@ -97,26 +107,45 @@ files:
97
107
  - bin/gator
98
108
  - gator.gemspec
99
109
  - lib/gator.rb
100
- - lib/gator/command.rb
101
- - lib/gator/commands.rb
102
- - lib/gator/commands/generate.rb
103
- - lib/gator/commands/project.rb
104
- - lib/gator/config.rb
105
- - lib/gator/generators.rb
106
- - lib/gator/generators/generator.rb
107
- - lib/gator/project.rb
108
- - lib/gator/runner.rb
109
- - lib/gator/task.rb
110
- - lib/gator/util.rb
111
- - spec/command_spec.rb
112
- - spec/config_spec.rb
110
+ - lib/gator/core.rb
111
+ - lib/gator/core/application/application.rb
112
+ - lib/gator/core/application/application_configuration.rb
113
+ - lib/gator/core/command/act_as_command.rb
114
+ - lib/gator/core/command/act_as_command_collection.rb
115
+ - lib/gator/core/command/command.rb
116
+ - lib/gator/core/command/task.rb
117
+ - lib/gator/core/configuration/act_as_configuration.rb
118
+ - lib/gator/core/configuration/configuration.rb
119
+ - lib/gator/core/io/paths.rb
120
+ - lib/gator/core/io/project_file_locator.rb
121
+ - lib/gator/core/io/ruby_file_loader.rb
122
+ - lib/gator/core/io/sandbox.rb
123
+ - lib/gator/core/project/layout.rb
124
+ - lib/gator/core/project/project.rb
125
+ - lib/gator/plugins/generators.rb
126
+ - lib/gator/plugins/generators/act_as_template_generator.rb
127
+ - lib/gator/plugins/generators/generate_command.rb
128
+ - lib/gator/plugins/generators/generator.rb
129
+ - lib/gator/plugins/scaffolding.rb
130
+ - lib/gator/plugins/scaffolding/scaffold_command.rb
131
+ - lib/gator/plugins/scaffolding/scaffolding_file_utils.rb
132
+ - rake/jeweler.rb
133
+ - rake/jeweler_prerelease_tasks.rb
134
+ - rake/pre_release_gemspec.rb
135
+ - rake/pre_release_to_git.rb
136
+ - spec/core/application/application_configuration_spec.rb
137
+ - spec/core/application/application_spec.rb
138
+ - spec/core/command/command_spec.rb
139
+ - spec/core/command/task_spec.rb
140
+ - spec/core/configuration/configuration_spec.rb
141
+ - spec/core/io/paths_spec.rb
142
+ - spec/core/io/sandbox_spec.rb
143
+ - spec/core/project/layout_spec.rb
144
+ - spec/core/project/project_spec.rb
113
145
  - spec/fixtures/empty_gator_project/gator.rb
114
- - spec/project_spec.rb
115
- - spec/runner_spec.rb
146
+ - spec/fixtures/no_gator_file/.empty_directory
147
+ - spec/plugins/scaffolding/scaffold_command_spec.rb
116
148
  - spec/spec_helper.rb
117
- - spec/task_spec.rb
118
- - spec/util_spec.rb
119
- has_rdoc: true
120
149
  homepage: http://github.com/devboy/gator
121
150
  licenses:
122
151
  - MIT
@@ -132,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
161
  version: '0'
133
162
  segments:
134
163
  - 0
135
- hash: -2425800773055495603
164
+ hash: -4555161155117195479
136
165
  required_rubygems_version: !ruby/object:Gem::Requirement
137
166
  none: false
138
167
  requirements:
@@ -141,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
170
  version: 1.3.1
142
171
  requirements: []
143
172
  rubyforge_project:
144
- rubygems_version: 1.6.2
173
+ rubygems_version: 1.8.10
145
174
  signing_key:
146
175
  specification_version: 3
147
176
  summary: gator - the friendly code-generator
@@ -1,109 +0,0 @@
1
- module Gator
2
-
3
- module ActAsCommand
4
-
5
- def self.included(base)
6
- base.extend(ClassMethods)
7
- end
8
-
9
- module ClassMethods
10
-
11
- attr_reader :definition, :parent
12
-
13
- def define(definition)
14
- @definition = definition
15
- end
16
-
17
- def parent_command=(klass)
18
- @parent = klass
19
- end
20
-
21
- end
22
-
23
- def parent
24
- self.class.parent
25
- end
26
-
27
- def definition
28
- self.class.definition
29
- end
30
-
31
- def get_subcommand(*args)
32
- nil
33
- end
34
-
35
- def resolve_subcommand(command,fallback=nil)
36
- return nil unless parent
37
- parent.resolve_subcommand(command,fallback)
38
- end
39
-
40
- end
41
-
42
- module ActAsCommandCollection
43
-
44
- def self.included(base)
45
- base.extend(ClassMethods)
46
- end
47
-
48
- module ClassMethods
49
-
50
- def subcommand_classes
51
- @subcommand_classes ||= {}
52
- end
53
-
54
- def register_subcommand(klass)
55
- d = klass.definition
56
- register klass, d[:command], d[:usage], d[:description], d[:options] || {}
57
- map [d[:short]] => d[:command] unless d[:short].nil?
58
- subcommand_classes[d[:command]] = klass
59
- klass.parent_command = self
60
- end
61
-
62
- def get_subcommand(*args)
63
- klass = self
64
- args.each do |arg|
65
- return nil unless klass.subcommand_classes.has_key? arg
66
- klass = klass.subcommand_classes[arg]
67
- end
68
- klass
69
- end
70
-
71
- def resolve_subcommand(command,fallback=nil)
72
-
73
- parent_klass = self
74
- klass = parent_klass.get_subcommand *command
75
-
76
- return klass unless klass.nil?
77
-
78
- while parent_klass.parent
79
- parent_klass = parent_klass.parent
80
- klass = parent_klass.get_subcommand *command
81
- return klass unless klass.nil?
82
- end
83
-
84
- resolve_subcommand fallback if fallback
85
- end
86
-
87
- end
88
-
89
- end
90
-
91
- class Command < Thor
92
- include ActAsCommand
93
- include ActAsCommandCollection
94
-
95
- #The following lines fix a bug in thor see: https://github.com/wycats/thor/pull/150
96
- class << self
97
- def register(klass, subcommand_name, usage, description, options={})
98
- if klass <= Thor::Group
99
- desc usage, description, options
100
- define_method(subcommand_name) { |*args| invoke klass }
101
- else
102
- desc usage, description, options
103
- subcommand subcommand_name, klass
104
- end
105
- end
106
- end
107
-
108
- end
109
- end