shoe 0.1.8 → 0.1.9

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.
@@ -11,14 +11,14 @@ Here's how your Rakefile looks:
11
11
  require 'shoe'
12
12
 
13
13
  Shoe.tie('myproject', '0.1.0', "This is my project, and it's awesome!") do |spec|
14
- spec.add_development_dependency 'thoughtbot-shoulda'
14
+ spec.add_development_dependency 'shoulda'
15
15
  end
16
16
 
17
17
  And here's what you get, at most:
18
18
 
19
19
  rake clean # Remove ignored files
20
+ rake cucumber # Run features
20
21
  rake default # Run tests / Run features
21
- rake features # Run features
22
22
  rake rdoc # Generate documentation
23
23
  rake release # Release myproject-0.1.0
24
24
  rake shell # Run an irb console
@@ -30,7 +30,7 @@ See what I mean by reading Shoe#define_tasks.
30
30
 
31
31
  == Install
32
32
 
33
- gem install matthewtodd-shoe --source http://gems.github.com
33
+ gem install shoe
34
34
 
35
35
  == Getting Started
36
36
 
data/Rakefile CHANGED
@@ -1,9 +1,10 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
2
2
  require 'shoe'
3
3
 
4
- Shoe.tie('shoe', '0.1.8', "You probably don't want to use Shoe.") do |spec|
4
+ Shoe.tie('shoe', '0.1.9', 'Another take on hoe, jeweler & friends.') do |spec|
5
5
  spec.remove_development_dependency_on_shoe
6
6
  spec.requirements = ['git']
7
7
  spec.add_runtime_dependency 'cucumber'
8
+ spec.add_runtime_dependency 'gemcutter'
8
9
  spec.add_runtime_dependency 'rake'
9
10
  end
data/bin/shoe CHANGED
@@ -1,43 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- if File.exists?('Rakefile')
4
- abort 'Rakefile exists. Not clobbering.'
3
+ def create_file(name, contents)
4
+ project_name = File.basename(File.expand_path(Dir.pwd))
5
+
6
+ if File.exists?(name)
7
+ STDERR.puts("#{name} exists. Not clobbering.")
8
+ else
9
+ File.open(name, 'w') { |file| file.write(contents.gsub('NAME', project_name)) }
10
+ end
5
11
  end
6
12
 
7
- project_name = File.basename(File.expand_path(Dir.pwd))
8
-
9
- File.open('Rakefile', 'w') do |file|
10
- file.write <<-END_RAKEFILE.gsub('NAME', project_name)
11
- this_rakefile_uses_shoe = <<END
12
- ----------------------------------------
13
- Please install Shoe:
14
- gem sources --add http://gems.github.com
15
- gem install matthewtodd-shoe
16
- ----------------------------------------
17
- END
18
-
13
+ # TODO read about heredocs at http://tomayko.com to see if I can clean this up a little.
14
+ create_file 'Rakefile', <<-END
19
15
  begin
20
- gem 'matthewtodd-shoe'
21
- rescue Gem::LoadError
22
- abort this_rakefile_uses_shoe
23
- else
24
16
  require 'shoe'
17
+ rescue LoadError
18
+ abort 'Please `gem install shoe` to get started.'
25
19
  end
26
20
 
27
21
  Shoe.tie('NAME', '0.1.0', 'TODO write a summary of NAME here.') do |spec|
28
- # spec.add_development_dependency 'thoughtbot-shoulda'
29
- end
30
- END_RAKEFILE
31
- end
32
-
33
- if File.exists?('README.rdoc')
34
- abort 'README.rdoc exists. Not clobbering.'
22
+ # spec.add_development_dependency 'shoulda'
35
23
  end
24
+ END
36
25
 
37
- File.open('README.rdoc', 'w') do |file|
38
- file.write <<-END_README.gsub('NAME', project_name.capitalize)
26
+ create_file 'README.rdoc', <<-END
39
27
  = NAME
40
28
 
41
29
  NAME is one of my favorite things! Let me tell you about it:
42
- END_README
43
- end
30
+ END
@@ -0,0 +1,17 @@
1
+ Feature: Cucumber
2
+ In order to use cucumber conveniently
3
+ As a developer
4
+ I want shoe to give me a rake task
5
+
6
+ Scenario: Running rake --tasks in a shoe project without Cucumber features
7
+ Given I have created a directory called "my_project"
8
+ And I have run shoe inside "my_project"
9
+ When I run rake --tasks inside "my_project"
10
+ Then I should not see "rake cucumber" on standard out
11
+
12
+ Scenario: Running rake --tasks in a shoe project with Cucumber features
13
+ Given I have created a directory called "my_project"
14
+ Given I have created a directory called "my_project/features"
15
+ And I have run shoe inside "my_project"
16
+ When I run rake --tasks inside "my_project"
17
+ Then I should see "rake cucumber" on standard out
@@ -0,0 +1,26 @@
1
+ Feature: Getting started
2
+ In order to start using shoe
3
+ As a developer
4
+ I want a little help generating my Rakefile
5
+
6
+ Scenario: Running shoe with no arguments in an empty directory
7
+ Given I have created a directory called "my_project"
8
+ When I run shoe inside "my_project"
9
+ Then I should see a file "my_project/Rakefile"
10
+ And I should see a file "my_project/README.rdoc"
11
+
12
+ Scenario: Running shoe with no arguments in a directory that already has a Rakefile
13
+ Given I have created a directory called "my_project"
14
+ And I have created a file called "my_project/Rakefile" containing "# RAKEFILE CONTENTS"
15
+ When I run shoe inside "my_project"
16
+ Then I should see "Rakefile exists. Not clobbering." on standard error
17
+ And the contents of "my_project/Rakefile" should still be "# RAKEFILE CONTENTS"
18
+ And I should see a file "my_project/README.rdoc"
19
+
20
+ Scenario: Running shoe with no arguments in a directory that already has a README.rdoc
21
+ Given I have created a directory called "my_project"
22
+ And I have created a file called "my_project/README.rdoc" containing "= README CONTENTS"
23
+ When I run shoe inside "my_project"
24
+ Then I should see a file "my_project/Rakefile"
25
+ Then I should see "README.rdoc exists. Not clobbering." on standard error
26
+ And the contents of "my_project/README.rdoc" should still be "= README CONTENTS"
@@ -0,0 +1,26 @@
1
+ Given /^I have created a directory called "([^\"]*)"$/ do |name|
2
+ create_directory(name)
3
+ end
4
+
5
+ Given /^I have created a file called "([^\"]*)" containing "([^\"]*)"$/ do |path, contents|
6
+ create_file(path, contents)
7
+ end
8
+
9
+ When /^I (?:have )?run (.*) inside "([^\"]*)"$/ do |command, path|
10
+ run(command, path)
11
+ end
12
+
13
+ Then /^I (should.*) see "([^\"]*)" on (standard.*)$/ do |should_or_should_not, message, standard_out_or_error|
14
+ standard_out_or_error.tr!(' ', '_')
15
+ should_or_should_not.tr!(' ', '_')
16
+
17
+ send(standard_out_or_error).send(should_or_should_not, include(message))
18
+ end
19
+
20
+ Then /^I should see a file "([^\"]*)"$/ do |path|
21
+ file(path).exist?.should == true
22
+ end
23
+
24
+ Then /^the contents of "([^\"]*)" should still be "([^\"]*)"$/ do |path, expected|
25
+ file(path).read.should == expected
26
+ end
@@ -0,0 +1,46 @@
1
+ require 'open3'
2
+ require 'pathname'
3
+ require 'tmpdir'
4
+
5
+ class WorkingDirectory
6
+ PROJECT_ROOT = Pathname.new(File.expand_path(File.join(File.dirname(__FILE__), '..', '..')))
7
+
8
+ attr_reader :working_directory
9
+ attr_reader :standard_out
10
+ attr_reader :standard_error
11
+
12
+ def initialize
13
+ @working_directory = Pathname.new(Dir.mktmpdir)
14
+ end
15
+
16
+ def create_directory(name)
17
+ working_directory.join(name).mkpath
18
+ end
19
+
20
+ def create_file(path, contents)
21
+ working_directory.join(path).open('w') { |file| file.write(contents) }
22
+ end
23
+
24
+ def file(path)
25
+ working_directory.join(path)
26
+ end
27
+
28
+ def run(command, path)
29
+ Dir.chdir(working_directory.join(path)) do
30
+ Open3.popen3(rejigger_the_path(command)) do |stdin, stdout, stderr|
31
+ @standard_out = stdout.read
32
+ @standard_error = stderr.read
33
+ end
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def rejigger_the_path(command)
40
+ "/usr/bin/env PATH='#{PROJECT_ROOT.join('bin')}:#{ENV['PATH']}' RUBYLIB='#{PROJECT_ROOT.join('lib')}' #{command}"
41
+ end
42
+ end
43
+
44
+ World { WorkingDirectory.new }
45
+ Before { working_directory.mkpath }
46
+ After { working_directory.rmtree }
@@ -6,7 +6,7 @@ require 'rubygems/doc_manager'
6
6
  #
7
7
  # require 'shoe'
8
8
  # Shoe.tie('myproject', '0.1.0', "This is my project, and it's awesome!") do |spec|
9
- # spec.add_development_dependency 'thoughtbot-shoulda'
9
+ # spec.add_development_dependency 'shoulda'
10
10
  # end
11
11
  #
12
12
  # Shoe comes with an executable named "shoe" that will generate a Rakefile like this (but slightly fancier) for you.
@@ -31,15 +31,15 @@ class Shoe
31
31
  spec.files = FileList['Rakefile', '*.gemspec', '**/*.rdoc', 'bin/**/*', 'examples/**/*', 'features/**/*', 'lib/**/*', 'resources/**/*', 'shoulda_macros/**/*', 'test/**/*'].to_a
32
32
  spec.executables = everything_in_the_bin_directory
33
33
  spec.rdoc_options = %W(--main README.rdoc --title #{name}-#{version} --inline-source) # MAYBE include --all, so that we document private methods?
34
- spec.extra_rdoc_files = FileList['*.rdoc', 'shoulda_macros/**/*'].to_a
34
+ spec.extra_rdoc_files = FileList['**/*.rdoc', 'shoulda_macros/**/*'].to_a
35
35
  spec.has_rdoc = true
36
36
  spec.author = `git config --get user.name`.chomp
37
37
  spec.email = `git config --get user.email`.chomp
38
- spec.add_development_dependency 'matthewtodd-shoe'
38
+ spec.add_development_dependency 'shoe'
39
39
  end
40
40
 
41
41
  def @spec.remove_development_dependency_on_shoe
42
- dependencies.delete_if { |d| d.name == 'matthewtodd-shoe' }
42
+ dependencies.delete_if { |d| d.name == 'shoe' }
43
43
  end
44
44
  end
45
45
 
@@ -85,8 +85,8 @@ class Shoe
85
85
 
86
86
  if File.directory?('features')
87
87
  require 'cucumber/rake/task'
88
- Cucumber::Rake::Task.new('features', 'Run features')
89
- default_depends_on(:features)
88
+ Cucumber::Rake::Task.new(:cucumber, 'Run features')
89
+ default_depends_on(:cucumber)
90
90
  end
91
91
 
92
92
  desc 'Show latest gemspec contents'
@@ -103,6 +103,8 @@ class Shoe
103
103
  sh "git tag #{spec.version}"
104
104
  sh 'git push'
105
105
  sh 'git push --tags'
106
+ sh "gem build #{spec.name}.gemspec"
107
+ sh "gem push #{spec.file_name}"
106
108
  end
107
109
  end
108
110
  end
@@ -2,21 +2,21 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{shoe}
5
- s.version = "0.1.8"
5
+ s.version = "0.1.9"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Matthew Todd"]
9
- s.date = %q{2009-09-02}
9
+ s.date = %q{2009-10-16}
10
10
  s.default_executable = %q{shoe}
11
11
  s.email = %q{matthew.todd@gmail.com}
12
12
  s.executables = ["shoe"]
13
13
  s.extra_rdoc_files = ["README.rdoc"]
14
- s.files = ["Rakefile", "shoe.gemspec", "README.rdoc", "bin/shoe", "lib/shoe.rb"]
15
- s.rdoc_options = ["--main", "README.rdoc", "--title", "shoe-0.1.8", "--inline-source"]
14
+ s.files = ["Rakefile", "shoe.gemspec", "README.rdoc", "bin/shoe", "features/cucumber.feature", "features/getting_started.feature", "features/step_definitions", "features/step_definitions/shoe_steps.rb", "features/support", "features/support/env.rb", "lib/shoe.rb"]
15
+ s.rdoc_options = ["--main", "README.rdoc", "--title", "shoe-0.1.9", "--inline-source"]
16
16
  s.require_paths = ["lib"]
17
17
  s.requirements = ["git"]
18
18
  s.rubygems_version = %q{1.3.5}
19
- s.summary = %q{You probably don't want to use Shoe.}
19
+ s.summary = %q{Another take on hoe, jeweler & friends.}
20
20
 
21
21
  if s.respond_to? :specification_version then
22
22
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -24,13 +24,16 @@ Gem::Specification.new do |s|
24
24
 
25
25
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
26
  s.add_runtime_dependency(%q<cucumber>, [">= 0"])
27
+ s.add_runtime_dependency(%q<gemcutter>, [">= 0"])
27
28
  s.add_runtime_dependency(%q<rake>, [">= 0"])
28
29
  else
29
30
  s.add_dependency(%q<cucumber>, [">= 0"])
31
+ s.add_dependency(%q<gemcutter>, [">= 0"])
30
32
  s.add_dependency(%q<rake>, [">= 0"])
31
33
  end
32
34
  else
33
35
  s.add_dependency(%q<cucumber>, [">= 0"])
36
+ s.add_dependency(%q<gemcutter>, [">= 0"])
34
37
  s.add_dependency(%q<rake>, [">= 0"])
35
38
  end
36
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Todd
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-02 00:00:00 +03:00
12
+ date: 2009-10-16 00:00:00 +03:00
13
13
  default_executable: shoe
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,6 +22,16 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "0"
24
24
  version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: gemcutter
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
25
35
  - !ruby/object:Gem::Dependency
26
36
  name: rake
27
37
  type: :runtime
@@ -45,6 +55,10 @@ files:
45
55
  - shoe.gemspec
46
56
  - README.rdoc
47
57
  - bin/shoe
58
+ - features/cucumber.feature
59
+ - features/getting_started.feature
60
+ - features/step_definitions/shoe_steps.rb
61
+ - features/support/env.rb
48
62
  - lib/shoe.rb
49
63
  has_rdoc: true
50
64
  homepage:
@@ -55,7 +69,7 @@ rdoc_options:
55
69
  - --main
56
70
  - README.rdoc
57
71
  - --title
58
- - shoe-0.1.8
72
+ - shoe-0.1.9
59
73
  - --inline-source
60
74
  require_paths:
61
75
  - lib
@@ -77,6 +91,6 @@ rubyforge_project:
77
91
  rubygems_version: 1.3.5
78
92
  signing_key:
79
93
  specification_version: 3
80
- summary: You probably don't want to use Shoe.
94
+ summary: Another take on hoe, jeweler & friends.
81
95
  test_files: []
82
96