newkata 0.8.3

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/.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: []