tony 0.0.1 → 0.2.0

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.
@@ -1,15 +1,11 @@
1
- require 'ostruct'
2
1
  require 'fileutils'
3
2
 
4
3
  module Tony
5
4
  class Generator
6
- attr_reader :name, :description, :files
5
+ attr_accessor :name, :description, :files, :gems, :combination
6
+
7
7
  def initialize(&block)
8
- options = OpenStruct.new
9
- yield options
10
- @name = options.name
11
- @description = options.description
12
- @files = options.files
8
+ yield self
13
9
  end
14
10
 
15
11
  def generate
@@ -0,0 +1,10 @@
1
+ Tony::generators << Tony::Generator.new do |options|
2
+ options.name = "heroku"
3
+ options.description = "Generates a heroku .gems file"
4
+ gems = Tony.used_generators.map { |g|
5
+ g.gems ||= []
6
+ }.flatten
7
+ options.files = {
8
+ '.gems' => gems
9
+ }
10
+ end
@@ -0,0 +1,6 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ desc "Run specs"
4
+ RSpec::Core::RakeTask.new do |t|
5
+ t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
6
+ end
@@ -2,13 +2,7 @@ Tony::generators << Tony::Generator.new do |options|
2
2
  options.name = "rspec"
3
3
  options.description = "Generates rspec rake tasks, spec directories and a spec_helper"
4
4
  options.files = {
5
- 'Rakefile' => <<-FILE
6
- require 'rspec/core/rake_task'
7
-
8
- desc "Run specs"
9
- RSpec::Core::RakeTask.new do |t|
10
- t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
11
- end
12
- FILE
5
+ 'Rakefile' => File.read(File.join(File.dirname(__FILE__), 'Rakefile')),
6
+ 'spec/helper.rb' => File.read(File.join(File.dirname(__FILE__), 'spec/helper.rb'))
13
7
  }
14
8
  end
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
@@ -0,0 +1,2 @@
1
+ require File.join(File.dirname(__FILE__), 'lib', 'application')
2
+ run Application.new
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'sinatra/base'
3
+ require File.join(File.dirname(__FILE__), 'configuration.rb')
4
+
5
+ class Application < Sinatra::Base
6
+ get '/?' do
7
+ erb :index
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ class Application < Sinatra::Base
2
+ configure do
3
+ set :app_file, File.join(File.dirname(__FILE__), 'application.rb')
4
+ set :public, File.join(File.dirname(__FILE__), '..', 'public')
5
+ set :views, File.join(File.dirname(__FILE__) , '..', 'views')
6
+ end
7
+
8
+ configure :production do
9
+
10
+ end
11
+
12
+ configure :development do
13
+
14
+ end
15
+
16
+ configure :test do
17
+
18
+ end
19
+ end
@@ -0,0 +1 @@
1
+ //scripts
@@ -0,0 +1 @@
1
+ /* styles */
@@ -0,0 +1,17 @@
1
+ Tony::generators << Tony::Generator.new do |options|
2
+ options.name = "sinatra"
3
+ options.description = "Generates a Sinatra application"
4
+ options.files = {}
5
+ [
6
+ 'config.ru',
7
+ 'lib/application.rb',
8
+ 'lib/configuration.rb',
9
+ 'public/scripts/main.js',
10
+ 'public/styles/main.css',
11
+ 'views/index.erb',
12
+ 'views/layout.erb'
13
+ ].each do |path|
14
+ options.files[path] = File.read(File.join(File.dirname(__FILE__), path))
15
+ end
16
+ options.gems = ['sinatra']
17
+ end
@@ -0,0 +1,2 @@
1
+ <h1>Sinatra</h1>
2
+ <p>Welcome to the Sinatra</p>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
6
+ <link rel="stylesheet" type="text/css" href="/styles/main.css" />
7
+ <script type="text/javascript" src="/scripts/main.js"></script>
8
+ <title>Sinatra Template</title>
9
+ </head>
10
+
11
+ <body>
12
+ <%= yield %>
13
+ </body>
14
+ </html>
@@ -0,0 +1,8 @@
1
+ Tony::generators << Tony::Generator.new do |options|
2
+ options.name = "sinatra and rspec"
3
+ options.description = "sinatra and rspec"
4
+ options.combination = ["sinatra", "rspec"]
5
+ options.files = {
6
+ 'spec/application_spec.rb' => File.read(File.join(File.dirname(__FILE__), 'spec', 'application_spec.rb'))
7
+ }
8
+ end
@@ -0,0 +1,21 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+
3
+ require 'application'
4
+ require 'rspec'
5
+ require 'rack/test'
6
+
7
+ describe Application do
8
+ include Rack::Test::Methods
9
+
10
+ def app
11
+ Application
12
+ end
13
+
14
+ context "GET /" do
15
+ it "should not 404" do
16
+ get "/"
17
+ last_response.ok?.should == true
18
+ end
19
+ end
20
+ end
21
+
data/lib/tony/tony.rb CHANGED
@@ -3,10 +3,27 @@ module Tony
3
3
  @@generators = [] unless defined? @@generators
4
4
  @@generators
5
5
  end
6
+
7
+ def self.used_generators
8
+ used_generators = []
9
+ generators.each do |generator|
10
+ used_generators << generator if ARGV.include?(generator.name)
11
+ if generator.combination
12
+ used_generators << generator if (ARGV - generator.combination).size == (ARGV.size - generator.combination.size)
13
+ end
14
+ end
15
+ used_generators
16
+ end
17
+
6
18
  def self.generate
7
- ARGV.each do |argument|
8
- generator = generators.find { |g| g.name == argument }
9
- generator.generate
19
+ if ARGV.size == 0
20
+ puts 'Supported Generators'
21
+ generators.each do |generator|
22
+ puts generator.name
23
+ end
24
+ end
25
+ used_generators.each do |used_generator|
26
+ used_generator.generate
10
27
  end
11
28
  end
12
29
  end
data/lib/tony/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tony
2
- VERSION = "0.0.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/tony.rb CHANGED
@@ -1,3 +1,7 @@
1
- require_relative 'tony/tony'
2
- require_relative 'tony/generator'
3
- require_relative 'tony/generators/rspec_generator'
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'tony'))
2
+ require 'tony'
3
+ require 'generator'
4
+
5
+ Dir.glob(File.join(File.dirname(__FILE__), '**/*_generator.rb')).each do |generator|
6
+ require generator
7
+ end
@@ -17,16 +17,20 @@ describe Tony::Generator do
17
17
  generator.name.should == "name"
18
18
  end
19
19
 
20
- it "can be executed from the command line" do
21
- ARGV = ['test_generator']
20
+ it "takes a combination" do
22
21
  generator = Tony::Generator.new do |options|
23
- options.name = "test_generator"
22
+ options.combination = ['generator1', 'generator2']
24
23
  end
25
- Tony::generators << generator
26
- generator.should_receive(:generate)
27
- Tony::generate
24
+ generator.combination.should == ['generator1', 'generator2']
28
25
  end
29
-
26
+
27
+ it "stores gems" do
28
+ generator = Tony::Generator.new do |options|
29
+ options.gems = ["rspec", "sinatra"]
30
+ end
31
+ generator.gems.should == ["rspec", "sinatra"]
32
+ end
33
+
30
34
  it "takes a description" do
31
35
  generator = Tony::Generator.new do |options|
32
36
  options.description = "description"
data/spec/tony_spec.rb CHANGED
@@ -1,4 +1,42 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe Tony do
4
+ def mock_generator(name, combination = nil)
5
+ mock_generator = mock
6
+ mock_generator.stub!(:name).and_return(name)
7
+ mock_generator.stub!(:combination).and_return(combination)
8
+ mock_generator
9
+ end
10
+
11
+ it "stores a list of used generators" do
12
+ ARGV = ['generator']
13
+ generator = mock_generator('generator')
14
+ Tony.stub!(:generators).and_return([generator])
15
+ Tony.used_generators.should == [generator]
16
+ end
17
+
18
+ it "stores a list of combination generators if all combinations are used" do
19
+ ARGV = ['generator1', 'generator2']
20
+ generator1 = mock_generator('generator1')
21
+ generator2 = mock_generator('generator2')
22
+ combination_generator = mock_generator('combination_generator', ['generator1', 'generator2'])
23
+ Tony.stub!(:generators).and_return([generator1, generator2, combination_generator])
24
+ Tony.used_generators.should == [generator1, generator2, combination_generator]
25
+ end
26
+
27
+ it "sends generate to all generators" do
28
+ generator = mock_generator('test_generator')
29
+ Tony.stub(:used_generators).and_return([generator])
30
+ generator.should_receive(:generate).once
31
+ Tony.generate
32
+ end
33
+
34
+ it "outputs a list of generators if there are no arguments" do
35
+ ARGV = []
36
+ generator = mock_generator('generator')
37
+ Tony.stub!(:generators).and_return([generator])
38
+ Tony.should_receive(:puts).with('Supported Generators')
39
+ Tony.should_receive(:puts).with('generator')
40
+ Tony.generate
41
+ end
4
42
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
+ - 2
7
8
  - 0
8
- - 1
9
- version: 0.0.1
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Andrew Vos
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-05-08 00:00:00 +01:00
17
+ date: 2011-05-10 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -48,7 +48,20 @@ files:
48
48
  - bin/tony
49
49
  - lib/tony.rb
50
50
  - lib/tony/generator.rb
51
- - lib/tony/generators/rspec_generator.rb
51
+ - lib/tony/generators/heroku/heroku_generator.rb
52
+ - lib/tony/generators/rspec/Rakefile
53
+ - lib/tony/generators/rspec/rspec_generator.rb
54
+ - lib/tony/generators/rspec/spec/helper.rb
55
+ - lib/tony/generators/sinatra/config.ru
56
+ - lib/tony/generators/sinatra/lib/application.rb
57
+ - lib/tony/generators/sinatra/lib/configuration.rb
58
+ - lib/tony/generators/sinatra/public/scripts/main.js
59
+ - lib/tony/generators/sinatra/public/styles/main.css
60
+ - lib/tony/generators/sinatra/sinatra_generator.rb
61
+ - lib/tony/generators/sinatra/views/index.erb
62
+ - lib/tony/generators/sinatra/views/layout.erb
63
+ - lib/tony/generators/sinatra_rspec/sinatra_rspec_generator.rb
64
+ - lib/tony/generators/sinatra_rspec/spec/application_spec.rb
52
65
  - lib/tony/tony.rb
53
66
  - lib/tony/version.rb
54
67
  - spec/generator_spec.rb