newkata 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ pkg
3
+ .bundle
4
+ tmp
5
+
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ group :dev do
6
+ gem "cucumber"
7
+ gem "aruba", git: "git@github.com:ameuret/aruba.git"
8
+ gem "guard-cucumber"
9
+ end
10
+
data/Gemfile.lock ADDED
@@ -0,0 +1,65 @@
1
+ GIT
2
+ remote: git@github.com:ameuret/aruba.git
3
+ revision: 68ec4bb35f10085f2dfaf4e4811903444c450162
4
+ specs:
5
+ aruba (0.4.0)
6
+ bcat (>= 0.6.1)
7
+ childprocess (>= 0.1.9)
8
+ cucumber (>= 0.10.5)
9
+ rdiscount (>= 1.6.8)
10
+ rspec (>= 2.6.0)
11
+
12
+ GEM
13
+ remote: http://rubygems.org/
14
+ specs:
15
+ bcat (0.6.1)
16
+ rack (~> 1.0)
17
+ builder (3.0.0)
18
+ childprocess (0.1.9)
19
+ ffi (~> 1.0.6)
20
+ cucumber (0.10.6)
21
+ builder (>= 2.1.2)
22
+ diff-lcs (>= 1.1.2)
23
+ gherkin (~> 2.4.0)
24
+ json (>= 1.4.6)
25
+ term-ansicolor (>= 1.0.5)
26
+ diff-lcs (1.1.2)
27
+ ffi (1.0.9)
28
+ gherkin (2.4.0)
29
+ json (>= 1.4.6)
30
+ guard (0.4.2)
31
+ thor (~> 0.14.6)
32
+ guard-cucumber (0.5.0)
33
+ cucumber (>= 0.10)
34
+ guard (>= 0.4.0)
35
+ guard-rspec (0.4.0)
36
+ guard (>= 0.4.0)
37
+ json (1.5.1)
38
+ libnotify (0.5.5)
39
+ rack (1.3.0)
40
+ rb-inotify (0.8.5)
41
+ ffi (>= 0.5.0)
42
+ rdiscount (1.6.8)
43
+ rspec (2.6.0)
44
+ rspec-core (~> 2.6.0)
45
+ rspec-expectations (~> 2.6.0)
46
+ rspec-mocks (~> 2.6.0)
47
+ rspec-core (2.6.4)
48
+ rspec-expectations (2.6.0)
49
+ diff-lcs (~> 1.1.2)
50
+ rspec-mocks (2.6.0)
51
+ term-ansicolor (1.0.5)
52
+ thor (0.14.6)
53
+
54
+ PLATFORMS
55
+ ruby
56
+
57
+ DEPENDENCIES
58
+ aruba!
59
+ cucumber
60
+ guard
61
+ guard-cucumber
62
+ guard-rspec
63
+ libnotify
64
+ rb-inotify
65
+ rspec
data/Guardfile ADDED
@@ -0,0 +1,6 @@
1
+
2
+ guard 'cucumber' do
3
+ watch(%r{^features/.+\.feature$})
4
+ watch(%r{^features/support/.+$}) { 'features' }
5
+ watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
6
+ end
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ New Kata
2
+ ========
3
+
4
+ A simple project generator, handy to tryout a new class with a corresponding (r)spec.
5
+
6
+ Features
7
+ --------
8
+
9
+ - Generates a project structure that uses Bundler and Guard
10
+ - Trivial to customize thanks to Thor
11
+ - So simple it can serve as a playground for beginners to Thor, Cucumber and Aruba
12
+ - Gets you coding faster than you can say pinan nidan
13
+
14
+ Installation
15
+ ------------
16
+
17
+ gem install newkata
18
+
19
+ Usage
20
+ -----
21
+
22
+ newkata StringCalculator
23
+ cd stringcalculator
24
+ bundle
25
+ bundle exec guard
26
+
27
+
28
+ EMACS users
29
+ -----------
30
+
31
+ RVM (through http://www.emacswiki.org/emacs/RvmEl), Bundler and RSpec play nicely with EMACS.
32
+ Launch guard under bundler using the current rvm with:
33
+
34
+ M-x rvm-use-default
35
+ M-x eshell
36
+ bundle exec guard
37
+
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
data/bin/newkata ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ NEWKATALIB=File.dirname(__FILE__) + '/../lib'
3
+ $: << NEWKATALIB unless $:.include? NEWKATALIB
4
+ require "bundler/setup"
5
+ require "thor"
6
+ require "newkata"
7
+
8
+ begin
9
+ NewKata::App.start
10
+ rescue ArgumentError
11
+ exit
12
+ end
@@ -0,0 +1,21 @@
1
+ Feature: Project creation
2
+ In order to quickly start flexing my brain muscles
3
+ as a Ruby developer, I need to create an empty
4
+ kata project with one command
5
+
6
+ Scenario: Create a kata project
7
+ Given I wish to create a kata for StringCalculator
8
+ When I run `newkata StringCalculator`
9
+ Then the following files should exist:
10
+ | stringcalculator/Gemfile |
11
+ | stringcalculator/Guardfile |
12
+ And the file "stringcalculator/lib/stringcalculator.rb" should contain "class StringCalculator"
13
+ And the file "stringcalculator/spec/stringcalculator_spec.rb" should contain "describe StringCalculator"
14
+
15
+ Scenario: Specify a lower-cased name
16
+ When I run `newkata stringcalculator`
17
+ Then the output should contain "The name argument must be usable as a Ruby class name"
18
+
19
+
20
+ # LocalWords: StringCalculator stringcalculator newkata
21
+
@@ -0,0 +1,16 @@
1
+ Feature: Set up an RSpec environment running under Guard
2
+ In order to start coding in serenity
3
+ as a BDD Ruby developer, I need an RSpec set up
4
+
5
+ Background:
6
+ Given I run `newkata StringCalculator`
7
+
8
+ Scenario: Coding under Guard
9
+ When I cd to "stringcalculator"
10
+ And I run `bundle exec guard` interactively
11
+ And I sleep for 5 seconds
12
+ And I stop the running process
13
+ Then the output should contain "1 example, 0 failures, 1 pending"
14
+
15
+ # LocalWords: StringCalculator stringcalculator newkata
16
+
@@ -0,0 +1,4 @@
1
+ Given /^I wish to create a kata for (.+)$/ do |kataName|
2
+ @kataName = kataName
3
+ end
4
+
@@ -0,0 +1,3 @@
1
+ When /^I sleep for (\d+) seconds$/ do |dur|
2
+ sleep dur.to_i
3
+ end
@@ -0,0 +1,2 @@
1
+ require "aruba/cucumber"
2
+
@@ -0,0 +1,3 @@
1
+ module Newkata
2
+ VERSION = "0.8.3"
3
+ end
data/lib/newkata.rb ADDED
@@ -0,0 +1,38 @@
1
+ require "thor/group"
2
+
3
+ module NewKata
4
+
5
+ class App < Thor::Group
6
+ include Thor::Actions
7
+
8
+ argument :name
9
+
10
+ def self.source_root
11
+ File.dirname(__FILE__)
12
+ end
13
+
14
+ def check_name
15
+ begin
16
+ instance_eval("class #{name};end")
17
+ rescue SyntaxError
18
+ puts "The name argument must be usable as a Ruby class name."
19
+ raise ArgumentError
20
+ end
21
+ end
22
+
23
+ def create_class_file
24
+ template('../templates/lib/skel.rb.tt', "#{name.downcase}/lib/#{name.downcase}.rb")
25
+ end
26
+
27
+ def create_spec_file
28
+ template('../templates/spec/skel_spec.rb.tt', "#{name.downcase}/spec/#{name.downcase}_spec.rb")
29
+ end
30
+
31
+ def copy_config_files
32
+ copy_file "../templates/Gemfile", "#{name.downcase}/Gemfile"
33
+ copy_file "../templates/Guardfile", "#{name.downcase}/Guardfile"
34
+ end
35
+
36
+ end
37
+
38
+ end
data/newkata.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("lib", File.dirname(__FILE__))
3
+ require "newkata/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "newkata"
7
+ s.version = Newkata::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Arnaud Meuret"]
10
+ s.email = ["arnaud@meuret.name"]
11
+ s.homepage = ""
12
+ s.summary = %q{Generate a simple Ruby project hierarchy perfect for code katas.}
13
+ s.description = %q{A simple project generator, handy to tryout a new class with a corresponding (r)spec.}
14
+
15
+ s.rubyforge_project = "newkata"
16
+
17
+ s.add_dependency "guard"
18
+ s.add_dependency "rb-inotify"
19
+ s.add_dependency "rspec"
20
+ s.add_dependency "guard-rspec"
21
+ s.add_dependency "libnotify"
22
+
23
+ # dev gems are better managed directly by the Gemfile
24
+ # s.add_development_dependency ""
25
+
26
+ s.files = `git ls-files`.split("\n")
27
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
28
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
29
+ s.require_paths = ["lib"]
30
+ end
data/templates/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'guard'
4
+ gem 'rb-inotify'
5
+ gem 'rspec'
6
+ gem 'guard-rspec'
7
+ gem "libnotify"
8
+
9
+
@@ -0,0 +1,20 @@
1
+ require 'bundler/setup'
2
+
3
+
4
+ guard 'rspec', :version => 2 do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+
9
+ # Rails example
10
+ watch(%r{^spec/.+_spec\.rb$})
11
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
12
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
13
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
14
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
15
+ watch('spec/spec_helper.rb') { "spec" }
16
+ watch('config/routes.rb') { "spec/routing" }
17
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
18
+ # Capybara request specs
19
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
20
+ end
@@ -0,0 +1,3 @@
1
+ class <%= name %>
2
+
3
+ end
@@ -0,0 +1,10 @@
1
+ require "#{File.dirname __FILE__}/../lib/<%= name.downcase %>"
2
+
3
+ describe <%= name %> do
4
+
5
+ it 'should ' do
6
+ pending 'you can start specifying here:'
7
+ end
8
+
9
+ end
10
+
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: newkata
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Arnaud Meuret
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-06-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: guard
16
+ requirement: &79492730 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *79492730
25
+ - !ruby/object:Gem::Dependency
26
+ name: rb-inotify
27
+ requirement: &79535560 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *79535560
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &79535350 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *79535350
47
+ - !ruby/object:Gem::Dependency
48
+ name: guard-rspec
49
+ requirement: &79535140 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *79535140
58
+ - !ruby/object:Gem::Dependency
59
+ name: libnotify
60
+ requirement: &79534930 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *79534930
69
+ description: A simple project generator, handy to tryout a new class with a corresponding
70
+ (r)spec.
71
+ email:
72
+ - arnaud@meuret.name
73
+ executables:
74
+ - newkata
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - .gitignore
79
+ - Gemfile
80
+ - Gemfile.lock
81
+ - Guardfile
82
+ - README.md
83
+ - Rakefile
84
+ - bin/newkata
85
+ - features/creation.feature
86
+ - features/rspec.feature
87
+ - features/step_definitions/creation_steps.rb
88
+ - features/step_definitions/rspec_steps.rb
89
+ - features/support/env.rb
90
+ - lib/newkata.rb
91
+ - lib/newkata/version.rb
92
+ - newkata.gemspec
93
+ - templates/Gemfile
94
+ - templates/Guardfile
95
+ - templates/lib/skel.rb.tt
96
+ - templates/spec/skel_spec.rb.tt
97
+ homepage: ''
98
+ licenses: []
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ requirements: []
116
+ rubyforge_project: newkata
117
+ rubygems_version: 1.8.5
118
+ signing_key:
119
+ specification_version: 3
120
+ summary: Generate a simple Ruby project hierarchy perfect for code katas.
121
+ test_files: []