gator 0.0.21.pre → 0.0.22.pre

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.
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
data/Gemfile CHANGED
@@ -12,5 +12,7 @@ group :development do
12
12
  gem "ci_reporter", "~> 1.6.5"
13
13
  gem "bundler", "~> 1.0.0"
14
14
  gem "jeweler", "~> 1.6.2"
15
- gem "rcov", ">= 0"
15
+ gem "simplecov", :require => false
16
+ gem "simplecov-rcov", :require => false
17
+ #gem "rcov", ">= 0"
16
18
  end
data/Rakefile CHANGED
@@ -25,6 +25,9 @@ Jeweler::Tasks.new do |gem|
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
27
27
 
28
+ require File.dirname(__FILE__)+"/rake/jeweler_prerelease_tasks"
29
+ Jeweler::PrereleaseTasks.new
30
+
28
31
  require 'rspec/core'
29
32
  require 'rspec/core/rake_task'
30
33
  require 'ci/reporter/rake/rspec'
@@ -35,12 +38,6 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
35
38
  end
36
39
 
37
40
  task :spec => "ci:setup:rspec"
38
-
39
- RSpec::Core::RakeTask.new(:rcov) do |spec|
40
- spec.pattern = 'spec/**/*_spec.rb'
41
- spec.rcov = true
42
- end
43
-
44
41
  task :test => :spec
45
42
  task :default => :spec
46
43
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.21.pre
1
+ 0.0.22.pre
data/bin/gator CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- require "rubygems"
3
- require "gator"
2
+ require File.dirname(__FILE__) + "/../lib/gator"
4
3
 
5
- Gator::Runner.start
4
+ Gator::Application.start
@@ -4,15 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{gator}
8
- s.version = "0.0.21.pre"
7
+ s.name = "gator"
8
+ s.version = "0.0.22.pre"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dominic Graefen"]
12
- s.date = %q{2011-08-19}
13
- s.default_executable = %q{gator}
14
- s.description = %q{gator - the friendly code-generator}
15
- s.email = %q{dominic.graefen@gmail.com}
12
+ s.date = "2011-10-12"
13
+ s.description = "gator - the friendly code-generator"
14
+ s.email = "dominic.graefen@gmail.com"
16
15
  s.executables = ["gator"]
17
16
  s.extra_rdoc_files = [
18
17
  "LICENSE.txt",
@@ -29,31 +28,51 @@ Gem::Specification.new do |s|
29
28
  "bin/gator",
30
29
  "gator.gemspec",
31
30
  "lib/gator.rb",
32
- "lib/gator/command.rb",
33
- "lib/gator/commands.rb",
34
- "lib/gator/commands/generate.rb",
35
- "lib/gator/commands/project.rb",
36
- "lib/gator/config.rb",
37
- "lib/gator/generators.rb",
38
- "lib/gator/generators/generator.rb",
39
- "lib/gator/project.rb",
40
- "lib/gator/runner.rb",
41
- "lib/gator/task.rb",
42
- "lib/gator/util.rb",
43
- "spec/command_spec.rb",
44
- "spec/config_spec.rb",
31
+ "lib/gator/core.rb",
32
+ "lib/gator/core/application/application.rb",
33
+ "lib/gator/core/application/application_configuration.rb",
34
+ "lib/gator/core/command/act_as_command.rb",
35
+ "lib/gator/core/command/act_as_command_collection.rb",
36
+ "lib/gator/core/command/command.rb",
37
+ "lib/gator/core/command/task.rb",
38
+ "lib/gator/core/configuration/act_as_configuration.rb",
39
+ "lib/gator/core/configuration/configuration.rb",
40
+ "lib/gator/core/io/paths.rb",
41
+ "lib/gator/core/io/project_file_locator.rb",
42
+ "lib/gator/core/io/ruby_file_loader.rb",
43
+ "lib/gator/core/io/sandbox.rb",
44
+ "lib/gator/core/project/layout.rb",
45
+ "lib/gator/core/project/project.rb",
46
+ "lib/gator/plugins/generators.rb",
47
+ "lib/gator/plugins/generators/act_as_template_generator.rb",
48
+ "lib/gator/plugins/generators/generate_command.rb",
49
+ "lib/gator/plugins/generators/generator.rb",
50
+ "lib/gator/plugins/scaffolding.rb",
51
+ "lib/gator/plugins/scaffolding/scaffold_command.rb",
52
+ "lib/gator/plugins/scaffolding/scaffolding_file_utils.rb",
53
+ "rake/jeweler.rb",
54
+ "rake/jeweler_prerelease_tasks.rb",
55
+ "rake/pre_release_gemspec.rb",
56
+ "rake/pre_release_to_git.rb",
57
+ "spec/core/application/application_configuration_spec.rb",
58
+ "spec/core/application/application_spec.rb",
59
+ "spec/core/command/command_spec.rb",
60
+ "spec/core/command/task_spec.rb",
61
+ "spec/core/configuration/configuration_spec.rb",
62
+ "spec/core/io/paths_spec.rb",
63
+ "spec/core/io/sandbox_spec.rb",
64
+ "spec/core/project/layout_spec.rb",
65
+ "spec/core/project/project_spec.rb",
45
66
  "spec/fixtures/empty_gator_project/gator.rb",
46
- "spec/project_spec.rb",
47
- "spec/runner_spec.rb",
48
- "spec/spec_helper.rb",
49
- "spec/task_spec.rb",
50
- "spec/util_spec.rb"
67
+ "spec/fixtures/no_gator_file/.empty_directory",
68
+ "spec/plugins/scaffolding/scaffold_command_spec.rb",
69
+ "spec/spec_helper.rb"
51
70
  ]
52
- s.homepage = %q{http://github.com/devboy/gator}
71
+ s.homepage = "http://github.com/devboy/gator"
53
72
  s.licenses = ["MIT"]
54
73
  s.require_paths = ["lib"]
55
- s.rubygems_version = %q{1.6.2}
56
- s.summary = %q{gator - the friendly code-generator}
74
+ s.rubygems_version = "1.8.10"
75
+ s.summary = "gator - the friendly code-generator"
57
76
 
58
77
  if s.respond_to? :specification_version then
59
78
  s.specification_version = 3
@@ -64,14 +83,16 @@ Gem::Specification.new do |s|
64
83
  s.add_development_dependency(%q<ci_reporter>, ["~> 1.6.5"])
65
84
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
66
85
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
67
- s.add_development_dependency(%q<rcov>, [">= 0"])
86
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
87
+ s.add_development_dependency(%q<simplecov-rcov>, [">= 0"])
68
88
  else
69
89
  s.add_dependency(%q<thor>, ["~> 0.14.6"])
70
90
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
71
91
  s.add_dependency(%q<ci_reporter>, ["~> 1.6.5"])
72
92
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
73
93
  s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
74
- s.add_dependency(%q<rcov>, [">= 0"])
94
+ s.add_dependency(%q<simplecov>, [">= 0"])
95
+ s.add_dependency(%q<simplecov-rcov>, [">= 0"])
75
96
  end
76
97
  else
77
98
  s.add_dependency(%q<thor>, ["~> 0.14.6"])
@@ -79,7 +100,8 @@ Gem::Specification.new do |s|
79
100
  s.add_dependency(%q<ci_reporter>, ["~> 1.6.5"])
80
101
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
81
102
  s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
82
- s.add_dependency(%q<rcov>, [">= 0"])
103
+ s.add_dependency(%q<simplecov>, [">= 0"])
104
+ s.add_dependency(%q<simplecov-rcov>, [">= 0"])
83
105
  end
84
106
  end
85
107
 
@@ -1,8 +1,6 @@
1
- require File.dirname(__FILE__) + '/gator/config'
2
- require File.dirname(__FILE__) + '/gator/project'
3
- require File.dirname(__FILE__) + '/gator/util'
4
- require File.dirname(__FILE__) + '/gator/command'
5
- require File.dirname(__FILE__) + '/gator/task'
6
- require File.dirname(__FILE__) + '/gator/generators'
7
- require File.dirname(__FILE__) + '/gator/runner'
8
- require File.dirname(__FILE__) + '/gator/commands'
1
+ require "thor"
2
+ require "thor/group"
3
+
4
+ require File.dirname(__FILE__) + '/gator/core'
5
+ require File.dirname(__FILE__) + '/gator/plugins/generators'
6
+ require File.dirname(__FILE__) + '/gator/plugins/scaffolding'
@@ -0,0 +1,19 @@
1
+ require File.expand_path( File.dirname(__FILE__) + '/core/command/act_as_command' )
2
+ require File.expand_path( File.dirname(__FILE__) + '/core/command/act_as_command_collection' )
3
+ require File.expand_path( File.dirname(__FILE__) + '/core/command/command' )
4
+ require File.expand_path( File.dirname(__FILE__) + '/core/command/task' )
5
+
6
+ require File.expand_path( File.dirname(__FILE__) + '/core/io/paths' )
7
+ require File.expand_path( File.dirname(__FILE__) + '/core/io/ruby_file_loader' )
8
+ require File.expand_path(File.dirname(__FILE__) + '/core/io/project_file_locator')
9
+ require File.expand_path( File.dirname(__FILE__) + '/core/io/sandbox' )
10
+
11
+ require File.expand_path( File.dirname(__FILE__) + '/core/configuration/act_as_configuration' )
12
+ require File.expand_path( File.dirname(__FILE__) + '/core/configuration/configuration' )
13
+
14
+ require File.expand_path( File.dirname(__FILE__) + '/core/project/layout' )
15
+ require File.expand_path( File.dirname(__FILE__) + '/core/project/project' )
16
+
17
+ require File.expand_path( File.dirname(__FILE__) + '/core/application/application' )
18
+ require File.expand_path( File.dirname(__FILE__) + '/core/application/application_configuration' )
19
+
@@ -0,0 +1,41 @@
1
+ require 'singleton'
2
+
3
+ class Gator
4
+ class Application < Command
5
+ #include Singleton
6
+ include Thor::Actions
7
+
8
+ desc "version", "Show Gator version"
9
+ def version
10
+ version_file = File.dirname(__FILE__) + '/../../../../VERSION'
11
+ say File.exist?(version_file) ? File.read(version_file) : ""
12
+ end
13
+
14
+ def initialize(*args)
15
+ bootstrap
16
+ super
17
+ end
18
+
19
+ no_tasks {
20
+
21
+ def bootstrap
22
+ Gator::Sandbox.add_getter :gator, Gator::ApplicationConfiguration.new
23
+ load_configuration
24
+ load_project
25
+ end
26
+
27
+ def load_configuration
28
+ file = Gator::Paths.env_file
29
+ say "No environment file (env.rb) could be found in gator home directory.(#{Gator::Paths.gator_home})", :yellow unless File.exist? file
30
+ RubyFileLoader.new(Gator::Sandbox).exec_file file if File.exist? file
31
+ end
32
+
33
+ def load_project
34
+ file = Gator::Paths.project_file
35
+ say "No project file (gator.rb) could be found in this directory.(#{Dir.pwd})", :yellow if file.nil?
36
+ RubyFileLoader.new(Gator::Sandbox).exec_file file unless file.nil?
37
+ end
38
+
39
+ }
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+ class Gator
2
+ class ApplicationConfiguration < Configuration
3
+
4
+ def initialize
5
+ add_configuration :project, Gator::Project.new
6
+ add_configuration :environment, Gator::Configuration.new
7
+ add_configuration :env, @environment
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ class Gator
2
+ module ActAsCommand
3
+
4
+ def self.included(base)
5
+ base.extend(ClassMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ attr_reader :definition, :parent
11
+
12
+ def define(definition)
13
+ @definition = definition
14
+ end
15
+
16
+ def parent_command=(klass)
17
+ @parent = klass
18
+ end
19
+
20
+ end
21
+
22
+ def parent
23
+ self.class.parent
24
+ end
25
+
26
+ def definition
27
+ self.class.definition
28
+ end
29
+
30
+ def get_subcommand(*args)
31
+ nil
32
+ end
33
+
34
+ def resolve_subcommand(command, fallback=nil)
35
+ return nil unless parent
36
+ parent.resolve_subcommand(command, fallback)
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,63 @@
1
+ class Gator
2
+ module ActAsCommandCollection
3
+
4
+ def self.included(base)
5
+ base.extend(ClassMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ def subcommand_classes
11
+ @subcommand_classes ||= {}
12
+ end
13
+
14
+ def register_subcommand(klass)
15
+ d = klass.definition
16
+ register klass, d[:command], d[:usage], d[:description], d[:options] || {}
17
+ map [d[:short]] => d[:command] unless d[:short].nil?
18
+ subcommand_classes[d[:command]] = klass
19
+ klass.parent_command = self
20
+ end
21
+
22
+ alias :<< :register_subcommand
23
+
24
+
25
+ def get_subcommand(*args)
26
+ klass = self
27
+ args.each do |arg|
28
+ return nil unless klass.subcommand_classes.has_key? arg
29
+ klass = klass.subcommand_classes[arg]
30
+ end
31
+ klass
32
+ end
33
+
34
+ def resolve_subcommand(command, fallback=nil)
35
+
36
+ subcommand = get_subcommand *command
37
+ return subcommand unless subcommand.nil?
38
+
39
+ if command.respond_to?(:first) && command.first == definition[:command]
40
+ command_stripped = command.dup
41
+ command_stripped.shift
42
+ subcommand = command_stripped.empty? ? self : get_subcommand(*command_stripped)
43
+ return subcommand unless subcommand.nil?
44
+ end
45
+
46
+ subcommand = parent.resolve_subcommand command unless parent.nil?
47
+ return subcommand unless subcommand.nil?
48
+
49
+ resolve_subcommand fallback unless fallback.nil?
50
+ end
51
+
52
+ end
53
+
54
+ def get_subcommand(*args)
55
+ self.class.get_subcommand *args
56
+ end
57
+
58
+ def resolve_subcommand(command, fallback=nil)
59
+ self.class.resolve_subcommand command, fallback
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,20 @@
1
+ class Gator
2
+ class Command < Thor
3
+ include ActAsCommand
4
+ include ActAsCommandCollection
5
+
6
+ #The following lines fix a bug in thor see: https://github.com/wycats/thor/pull/150
7
+ class << self
8
+ def register(klass, subcommand_name, usage, description, options={})
9
+ if klass <= Thor::Group
10
+ desc usage, description, options
11
+ define_method(subcommand_name) { |*args| invoke klass }
12
+ else
13
+ desc usage, description, options
14
+ subcommand subcommand_name, klass
15
+ end
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -1,7 +1,4 @@
1
- require "thor/group"
2
- require "thor/actions"
3
-
4
- module Gator
1
+ class Gator
5
2
  class Task < Thor::Group
6
3
  include ActAsCommand
7
4
  include Thor::Actions
@@ -0,0 +1,30 @@
1
+ class Gator
2
+ module ActAsConfiguration
3
+
4
+ def add_getter name, val
5
+ self.class.send :attr_reader, name
6
+ instance_variable_set "@#{name}", val
7
+ end
8
+
9
+ def add_configuration(name, val=nil)
10
+
11
+ create_method "#{name.to_s}=" do |val|
12
+ instance_variable_set("@#{name}", val)
13
+ end
14
+
15
+ create_method name do |&block|
16
+ block.call(instance_variable_get("@#{name}")) if block
17
+ instance_variable_get("@#{name}")
18
+ end
19
+
20
+ instance_variable_set("@#{name}", val) if val
21
+ end
22
+
23
+ private
24
+
25
+ def create_method(name, &block)
26
+ self.class.send(:define_method, name, &block)
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,5 @@
1
+ class Gator
2
+ class Configuration
3
+ include Gator::ActAsConfiguration
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ class Gator
2
+ class Paths
3
+
4
+ def self.gator_home
5
+ File.join(Thor::Util.user_home, ".gator").gsub(/\\/, '/')
6
+ end
7
+
8
+ def self.env_file
9
+ File.join gator_home, "environment.rb"
10
+ end
11
+
12
+ def self.project_home
13
+ Gator::ProjectFileLocator.new.find_project_dir
14
+ end
15
+
16
+ def self.project_file
17
+ Gator::ProjectFileLocator.new.find_project_file
18
+ end
19
+
20
+ end
21
+ end