gohanlonllc-jeweler 0.11.1.20090513153819

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 (127) hide show
  1. data/.gitignore +7 -0
  2. data/ChangeLog.markdown +83 -0
  3. data/LICENSE +20 -0
  4. data/README.markdown +170 -0
  5. data/ROADMAP +12 -0
  6. data/Rakefile +106 -0
  7. data/VERSION.yml +5 -0
  8. data/bin/jeweler +8 -0
  9. data/features/generator/cucumber.feature +83 -0
  10. data/features/generator/directory_layout.feature +76 -0
  11. data/features/generator/dotdocument.feature +14 -0
  12. data/features/generator/env_options.feature +9 -0
  13. data/features/generator/git.feature +94 -0
  14. data/features/generator/license.feature +11 -0
  15. data/features/generator/rakefile.feature +110 -0
  16. data/features/generator/readme.feature +12 -0
  17. data/features/generator/test.feature +41 -0
  18. data/features/generator/test_helper.feature +49 -0
  19. data/features/placeholder.feature +5 -0
  20. data/features/step_definitions/debug_steps.rb +6 -0
  21. data/features/step_definitions/filesystem_steps.rb +65 -0
  22. data/features/step_definitions/generator_steps.rb +251 -0
  23. data/features/step_definitions/task_steps.rb +6 -0
  24. data/features/support/env.rb +19 -0
  25. data/features/tasks/build_gem.feature +9 -0
  26. data/features/tasks/version.feature +24 -0
  27. data/features/tasks/version_bumping.feature +33 -0
  28. data/jeweler.gemspec +205 -0
  29. data/lib/jeweler/commands/build_gem.rb +31 -0
  30. data/lib/jeweler/commands/install_gem.rb +26 -0
  31. data/lib/jeweler/commands/release.rb +83 -0
  32. data/lib/jeweler/commands/release_to_rubyforge.rb +51 -0
  33. data/lib/jeweler/commands/setup_rubyforge.rb +38 -0
  34. data/lib/jeweler/commands/validate_gemspec.rb +30 -0
  35. data/lib/jeweler/commands/version/base.rb +41 -0
  36. data/lib/jeweler/commands/version/bump_major.rb +13 -0
  37. data/lib/jeweler/commands/version/bump_minor.rb +12 -0
  38. data/lib/jeweler/commands/version/bump_patch.rb +14 -0
  39. data/lib/jeweler/commands/version/bump_timestamp.rb +14 -0
  40. data/lib/jeweler/commands/version/write.rb +12 -0
  41. data/lib/jeweler/commands/write_gemspec.rb +39 -0
  42. data/lib/jeweler/commands.rb +13 -0
  43. data/lib/jeweler/errors.rb +20 -0
  44. data/lib/jeweler/gemspec_helper.rb +76 -0
  45. data/lib/jeweler/generator/application.rb +54 -0
  46. data/lib/jeweler/generator/bacon_mixin.rb +39 -0
  47. data/lib/jeweler/generator/micronaut_mixin.rb +38 -0
  48. data/lib/jeweler/generator/minitest_mixin.rb +39 -0
  49. data/lib/jeweler/generator/options.rb +77 -0
  50. data/lib/jeweler/generator/rspec_mixin.rb +39 -0
  51. data/lib/jeweler/generator/shoulda_mixin.rb +39 -0
  52. data/lib/jeweler/generator/testunit_mixin.rb +39 -0
  53. data/lib/jeweler/generator.rb +284 -0
  54. data/lib/jeweler/rubyforge_tasks.rb +46 -0
  55. data/lib/jeweler/specification.rb +65 -0
  56. data/lib/jeweler/tasks.rb +131 -0
  57. data/lib/jeweler/templates/.document +5 -0
  58. data/lib/jeweler/templates/.gitignore +5 -0
  59. data/lib/jeweler/templates/LICENSE +20 -0
  60. data/lib/jeweler/templates/README.rdoc +7 -0
  61. data/lib/jeweler/templates/Rakefile +102 -0
  62. data/lib/jeweler/templates/bacon/flunking.rb +7 -0
  63. data/lib/jeweler/templates/bacon/helper.rb +8 -0
  64. data/lib/jeweler/templates/features/default.feature +9 -0
  65. data/lib/jeweler/templates/features/support/env.rb +8 -0
  66. data/lib/jeweler/templates/micronaut/flunking.rb +7 -0
  67. data/lib/jeweler/templates/micronaut/helper.rb +17 -0
  68. data/lib/jeweler/templates/minitest/flunking.rb +7 -0
  69. data/lib/jeweler/templates/minitest/helper.rb +11 -0
  70. data/lib/jeweler/templates/rspec/flunking.rb +7 -0
  71. data/lib/jeweler/templates/rspec/helper.rb +9 -0
  72. data/lib/jeweler/templates/shoulda/flunking.rb +7 -0
  73. data/lib/jeweler/templates/shoulda/helper.rb +10 -0
  74. data/lib/jeweler/templates/testunit/flunking.rb +7 -0
  75. data/lib/jeweler/templates/testunit/helper.rb +9 -0
  76. data/lib/jeweler/version_helper.rb +140 -0
  77. data/lib/jeweler.rb +155 -0
  78. data/test/fixtures/bar/VERSION.yml +4 -0
  79. data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
  80. data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
  81. data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
  82. data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
  83. data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
  84. data/test/fixtures/existing-project-with-version-plaintext/LICENSE +20 -0
  85. data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
  86. data/test/fixtures/existing-project-with-version-plaintext/Rakefile +82 -0
  87. data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
  88. data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
  89. data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
  90. data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
  91. data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
  92. data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
  93. data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
  94. data/test/fixtures/existing-project-with-version-yaml/LICENSE +20 -0
  95. data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
  96. data/test/fixtures/existing-project-with-version-yaml/Rakefile +82 -0
  97. data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
  98. data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
  99. data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
  100. data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
  101. data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
  102. data/test/geminstaller.yml +12 -0
  103. data/test/jeweler/commands/test_build_gem.rb +72 -0
  104. data/test/jeweler/commands/test_install_gem.rb +21 -0
  105. data/test/jeweler/commands/test_release.rb +405 -0
  106. data/test/jeweler/commands/test_release_to_rubyforge.rb +157 -0
  107. data/test/jeweler/commands/test_setup_rubyforge.rb +88 -0
  108. data/test/jeweler/commands/test_validate_gemspec.rb +27 -0
  109. data/test/jeweler/commands/test_write_gemspec.rb +92 -0
  110. data/test/jeweler/commands/version/test_base.rb +32 -0
  111. data/test/jeweler/commands/version/test_bump_major.rb +22 -0
  112. data/test/jeweler/commands/version/test_bump_minor.rb +19 -0
  113. data/test/jeweler/commands/version/test_bump_patch.rb +20 -0
  114. data/test/jeweler/commands/version/test_write.rb +23 -0
  115. data/test/shoulda_macros/jeweler_macros.rb +35 -0
  116. data/test/test_application.rb +139 -0
  117. data/test/test_gemspec_helper.rb +40 -0
  118. data/test/test_generator.rb +154 -0
  119. data/test/test_generator_initialization.rb +113 -0
  120. data/test/test_generator_mixins.rb +18 -0
  121. data/test/test_helper.rb +133 -0
  122. data/test/test_jeweler.rb +174 -0
  123. data/test/test_options.rb +116 -0
  124. data/test/test_specification.rb +61 -0
  125. data/test/test_tasks.rb +51 -0
  126. data/test/test_version_helper.rb +153 -0
  127. metadata +229 -0
@@ -0,0 +1,9 @@
1
+ Feature: building gems
2
+
3
+ Scenario: default
4
+ Given a working directory
5
+ And I use the existing project "existing-project-with-version-yaml" as a template
6
+ And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
7
+ And "existing-project-with-version/pkg/existing-project-with-version-1.5.3.gem" does not exist
8
+ When I run "rake build" in "existing-project-with-version-yaml"
9
+ Then I can gem install "existing-project-with-version-yaml/pkg/existing-project-with-version-1.5.3.gem"
@@ -0,0 +1,24 @@
1
+ Feature: version rake task
2
+
3
+ #Scenario: a newly created project without a version
4
+ # Given a working directory
5
+ # And I use the jeweler command to generate the "the-perfect-gem" project in the working directory
6
+ # And "the-perfect-gem/VERSION" does not exist
7
+ # When I run "rake version" in "the-perfect-gem"
8
+ # Then the process should not exit cleanly
9
+
10
+ Scenario: an existing project with version yaml
11
+ Given a working directory
12
+ And I use the existing project "existing-project-with-version-yaml" as a template
13
+ And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
14
+ When I run "rake version" in "existing-project-with-version-yaml"
15
+ Then the process should exit cleanly
16
+ And the current version, 1.5.3, is displayed
17
+
18
+ Scenario: an existing project with version plaintext
19
+ Given a working directory
20
+ And I use the existing project "existing-project-with-version-plaintext" as a template
21
+ And "VERSION" contains "1.5.3"
22
+ When I run "rake version" in "existing-project-with-version-plaintext"
23
+ Then the process should exit cleanly
24
+ And the current version, 1.5.3, is displayed
@@ -0,0 +1,33 @@
1
+ Feature: bumping version
2
+
3
+ Scenario: major version
4
+ Given a working directory
5
+ And I use the existing project "existing-project-with-version-yaml" as a template
6
+ And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
7
+ When I run "rake version:bump:major" in "existing-project-with-version-yaml"
8
+ Then the process should exit cleanly
9
+ And the updated version, 2.0.0, is displayed
10
+
11
+ Scenario: minor version
12
+ Given a working directory
13
+ And I use the existing project "existing-project-with-version-yaml" as a template
14
+ And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
15
+ When I run "rake version:bump:minor" in "existing-project-with-version-yaml"
16
+ Then the process should exit cleanly
17
+ And the updated version, 1.6.0, is displayed
18
+
19
+ Scenario: patch version
20
+ Given a working directory
21
+ And I use the existing project "existing-project-with-version-yaml" as a template
22
+ And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
23
+ When I run "rake version:bump:patch" in "existing-project-with-version-yaml"
24
+ Then the process should exit cleanly
25
+ And the updated version, 1.5.4, is displayed
26
+
27
+ Scenario: arbitrary version
28
+ Given a working directory
29
+ And I use the existing project "existing-project-with-version-yaml" as a template
30
+ And "VERSION.yml" contains hash "{ :major => 1, :minor => 5, :patch => 3}"
31
+ When I run "rake version:write MAJOR=3 MINOR=7 PATCH=1" in "existing-project-with-version-yaml"
32
+ Then the process should exit cleanly
33
+ And the updated version, 3.7.1, is displayed
data/jeweler.gemspec ADDED
@@ -0,0 +1,205 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{jeweler}
5
+ s.version = "0.11.1.20090513153819"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Josh Nichols"]
9
+ s.date = %q{2009-05-13}
10
+ s.default_executable = %q{jeweler}
11
+ s.description = %q{Simple and opinionated helper for creating Rubygem projects on GitHub}
12
+ s.email = %q{josh@technicalpickles.com}
13
+ s.executables = ["jeweler"]
14
+ s.extra_rdoc_files = [
15
+ "ChangeLog.markdown",
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".gitignore",
21
+ "ChangeLog.markdown",
22
+ "LICENSE",
23
+ "README.markdown",
24
+ "ROADMAP",
25
+ "Rakefile",
26
+ "VERSION.yml",
27
+ "bin/jeweler",
28
+ "features/generator/cucumber.feature",
29
+ "features/generator/directory_layout.feature",
30
+ "features/generator/dotdocument.feature",
31
+ "features/generator/env_options.feature",
32
+ "features/generator/git.feature",
33
+ "features/generator/license.feature",
34
+ "features/generator/rakefile.feature",
35
+ "features/generator/readme.feature",
36
+ "features/generator/test.feature",
37
+ "features/generator/test_helper.feature",
38
+ "features/placeholder.feature",
39
+ "features/step_definitions/debug_steps.rb",
40
+ "features/step_definitions/filesystem_steps.rb",
41
+ "features/step_definitions/generator_steps.rb",
42
+ "features/step_definitions/task_steps.rb",
43
+ "features/support/env.rb",
44
+ "features/tasks/build_gem.feature",
45
+ "features/tasks/version.feature",
46
+ "features/tasks/version_bumping.feature",
47
+ "jeweler.gemspec",
48
+ "lib/jeweler.rb",
49
+ "lib/jeweler/commands.rb",
50
+ "lib/jeweler/commands/build_gem.rb",
51
+ "lib/jeweler/commands/install_gem.rb",
52
+ "lib/jeweler/commands/release.rb",
53
+ "lib/jeweler/commands/release_to_rubyforge.rb",
54
+ "lib/jeweler/commands/setup_rubyforge.rb",
55
+ "lib/jeweler/commands/validate_gemspec.rb",
56
+ "lib/jeweler/commands/version/base.rb",
57
+ "lib/jeweler/commands/version/bump_major.rb",
58
+ "lib/jeweler/commands/version/bump_minor.rb",
59
+ "lib/jeweler/commands/version/bump_patch.rb",
60
+ "lib/jeweler/commands/version/bump_timestamp.rb",
61
+ "lib/jeweler/commands/version/write.rb",
62
+ "lib/jeweler/commands/write_gemspec.rb",
63
+ "lib/jeweler/errors.rb",
64
+ "lib/jeweler/gemspec_helper.rb",
65
+ "lib/jeweler/generator.rb",
66
+ "lib/jeweler/generator/application.rb",
67
+ "lib/jeweler/generator/bacon_mixin.rb",
68
+ "lib/jeweler/generator/micronaut_mixin.rb",
69
+ "lib/jeweler/generator/minitest_mixin.rb",
70
+ "lib/jeweler/generator/options.rb",
71
+ "lib/jeweler/generator/rspec_mixin.rb",
72
+ "lib/jeweler/generator/shoulda_mixin.rb",
73
+ "lib/jeweler/generator/testunit_mixin.rb",
74
+ "lib/jeweler/rubyforge_tasks.rb",
75
+ "lib/jeweler/specification.rb",
76
+ "lib/jeweler/tasks.rb",
77
+ "lib/jeweler/templates/.document",
78
+ "lib/jeweler/templates/.document",
79
+ "lib/jeweler/templates/.gitignore",
80
+ "lib/jeweler/templates/.gitignore",
81
+ "lib/jeweler/templates/LICENSE",
82
+ "lib/jeweler/templates/README.rdoc",
83
+ "lib/jeweler/templates/Rakefile",
84
+ "lib/jeweler/templates/bacon/flunking.rb",
85
+ "lib/jeweler/templates/bacon/helper.rb",
86
+ "lib/jeweler/templates/features/default.feature",
87
+ "lib/jeweler/templates/features/support/env.rb",
88
+ "lib/jeweler/templates/micronaut/flunking.rb",
89
+ "lib/jeweler/templates/micronaut/helper.rb",
90
+ "lib/jeweler/templates/minitest/flunking.rb",
91
+ "lib/jeweler/templates/minitest/helper.rb",
92
+ "lib/jeweler/templates/rspec/flunking.rb",
93
+ "lib/jeweler/templates/rspec/helper.rb",
94
+ "lib/jeweler/templates/shoulda/flunking.rb",
95
+ "lib/jeweler/templates/shoulda/helper.rb",
96
+ "lib/jeweler/templates/testunit/flunking.rb",
97
+ "lib/jeweler/templates/testunit/helper.rb",
98
+ "lib/jeweler/version_helper.rb",
99
+ "test/fixtures/bar/VERSION.yml",
100
+ "test/fixtures/bar/bin/foo_the_ultimate_bin",
101
+ "test/fixtures/bar/hey_include_me_in_gemspec",
102
+ "test/fixtures/bar/lib/foo_the_ultimate_lib.rb",
103
+ "test/fixtures/existing-project-with-version-plaintext/.document",
104
+ "test/fixtures/existing-project-with-version-plaintext/.gitignore",
105
+ "test/fixtures/existing-project-with-version-plaintext/LICENSE",
106
+ "test/fixtures/existing-project-with-version-plaintext/README.rdoc",
107
+ "test/fixtures/existing-project-with-version-plaintext/Rakefile",
108
+ "test/fixtures/existing-project-with-version-plaintext/VERSION",
109
+ "test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec",
110
+ "test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb",
111
+ "test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb",
112
+ "test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb",
113
+ "test/fixtures/existing-project-with-version-yaml/.document",
114
+ "test/fixtures/existing-project-with-version-yaml/.gitignore",
115
+ "test/fixtures/existing-project-with-version-yaml/LICENSE",
116
+ "test/fixtures/existing-project-with-version-yaml/README.rdoc",
117
+ "test/fixtures/existing-project-with-version-yaml/Rakefile",
118
+ "test/fixtures/existing-project-with-version-yaml/VERSION.yml",
119
+ "test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec",
120
+ "test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb",
121
+ "test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb",
122
+ "test/fixtures/existing-project-with-version-yaml/test/test_helper.rb",
123
+ "test/geminstaller.yml",
124
+ "test/jeweler/commands/test_build_gem.rb",
125
+ "test/jeweler/commands/test_install_gem.rb",
126
+ "test/jeweler/commands/test_release.rb",
127
+ "test/jeweler/commands/test_release_to_rubyforge.rb",
128
+ "test/jeweler/commands/test_setup_rubyforge.rb",
129
+ "test/jeweler/commands/test_validate_gemspec.rb",
130
+ "test/jeweler/commands/test_write_gemspec.rb",
131
+ "test/jeweler/commands/version/test_base.rb",
132
+ "test/jeweler/commands/version/test_bump_major.rb",
133
+ "test/jeweler/commands/version/test_bump_minor.rb",
134
+ "test/jeweler/commands/version/test_bump_patch.rb",
135
+ "test/jeweler/commands/version/test_write.rb",
136
+ "test/shoulda_macros/jeweler_macros.rb",
137
+ "test/test_application.rb",
138
+ "test/test_gemspec_helper.rb",
139
+ "test/test_generator.rb",
140
+ "test/test_generator_initialization.rb",
141
+ "test/test_generator_mixins.rb",
142
+ "test/test_helper.rb",
143
+ "test/test_jeweler.rb",
144
+ "test/test_options.rb",
145
+ "test/test_specification.rb",
146
+ "test/test_tasks.rb",
147
+ "test/test_version_helper.rb"
148
+ ]
149
+ s.has_rdoc = true
150
+ s.homepage = %q{http://github.com/technicalpickles/jeweler}
151
+ s.rdoc_options = ["--charset=UTF-8"]
152
+ s.require_paths = ["lib"]
153
+ s.rubyforge_project = %q{pickles}
154
+ s.rubygems_version = %q{1.3.2}
155
+ s.summary = %q{Simple and opinionated helper for creating Rubygem projects on GitHub}
156
+ s.test_files = [
157
+ "test/fixtures/bar/lib/foo_the_ultimate_lib.rb",
158
+ "test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb",
159
+ "test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb",
160
+ "test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb",
161
+ "test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb",
162
+ "test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb",
163
+ "test/fixtures/existing-project-with-version-yaml/test/test_helper.rb",
164
+ "test/jeweler/commands/test_build_gem.rb",
165
+ "test/jeweler/commands/test_install_gem.rb",
166
+ "test/jeweler/commands/test_release.rb",
167
+ "test/jeweler/commands/test_release_to_rubyforge.rb",
168
+ "test/jeweler/commands/test_setup_rubyforge.rb",
169
+ "test/jeweler/commands/test_validate_gemspec.rb",
170
+ "test/jeweler/commands/test_write_gemspec.rb",
171
+ "test/jeweler/commands/version/test_base.rb",
172
+ "test/jeweler/commands/version/test_bump_major.rb",
173
+ "test/jeweler/commands/version/test_bump_minor.rb",
174
+ "test/jeweler/commands/version/test_bump_patch.rb",
175
+ "test/jeweler/commands/version/test_write.rb",
176
+ "test/shoulda_macros/jeweler_macros.rb",
177
+ "test/test_application.rb",
178
+ "test/test_gemspec_helper.rb",
179
+ "test/test_generator.rb",
180
+ "test/test_generator_initialization.rb",
181
+ "test/test_generator_mixins.rb",
182
+ "test/test_helper.rb",
183
+ "test/test_jeweler.rb",
184
+ "test/test_options.rb",
185
+ "test/test_specification.rb",
186
+ "test/test_tasks.rb",
187
+ "test/test_version_helper.rb"
188
+ ]
189
+
190
+ if s.respond_to? :specification_version then
191
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
192
+ s.specification_version = 3
193
+
194
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
195
+ s.add_runtime_dependency(%q<git>, [">= 1.1.1"])
196
+ s.add_runtime_dependency(%q<rubyforge>, [">= 0"])
197
+ else
198
+ s.add_dependency(%q<git>, [">= 1.1.1"])
199
+ s.add_dependency(%q<rubyforge>, [">= 0"])
200
+ end
201
+ else
202
+ s.add_dependency(%q<git>, [">= 1.1.1"])
203
+ s.add_dependency(%q<rubyforge>, [">= 0"])
204
+ end
205
+ end
@@ -0,0 +1,31 @@
1
+ class Jeweler
2
+ module Commands
3
+ class BuildGem
4
+ attr_accessor :base_dir, :gemspec_helper, :file_utils
5
+
6
+ def initialize
7
+ self.file_utils = FileUtils
8
+ end
9
+
10
+ def run
11
+ gemspec = gemspec_helper.parse
12
+ gem_file_name = Gem::Builder.new(gemspec).build
13
+
14
+ pkg_dir = File.join(base_dir, 'pkg')
15
+ file_utils.mkdir_p pkg_dir
16
+
17
+ gem_file_name = File.join(base_dir, gem_file_name)
18
+ file_utils.mv gem_file_name, pkg_dir
19
+ end
20
+
21
+ def self.build_for(jeweler)
22
+ command = new
23
+
24
+ command.base_dir = jeweler.base_dir
25
+ command.gemspec_helper = jeweler.gemspec_helper
26
+
27
+ command
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ class Jeweler
2
+ module Commands
3
+ class InstallGem
4
+ attr_accessor :gemspec_helper, :output
5
+
6
+ def initialize
7
+ self.output = $stdout
8
+ end
9
+
10
+
11
+ def run
12
+ command = "sudo gem install #{gemspec_helper.gem_path}"
13
+ output.puts "Executing #{command.inspect}:"
14
+
15
+ sh command # TODO where does sh actually come from!?
16
+ end
17
+
18
+ def self.build_for(jeweler)
19
+ command = new
20
+ command.output = jeweler.output
21
+ command.gemspec_helper = jeweler.gemspec_helper
22
+ command
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,83 @@
1
+ class Jeweler
2
+ module Commands
3
+ class Release
4
+ attr_accessor :gemspec, :version, :repo, :output, :gemspec_helper, :base_dir
5
+
6
+ def initialize(attributes = {})
7
+ self.output = $stdout
8
+
9
+ attributes.each_pair do |key, value|
10
+ send("#{key}=", value)
11
+ end
12
+ end
13
+
14
+ def run
15
+ raise "Hey buddy, try committing them files first" if any_pending_changes?
16
+
17
+ repo.checkout('master')
18
+
19
+ regenerate_gemspec!
20
+ commit_gemspec! if gemspec_changed?
21
+
22
+ output.puts "Pushing master to origin"
23
+ repo.push
24
+
25
+ tag_release! unless release_tagged?
26
+ end
27
+
28
+ def any_pending_changes?
29
+ !(@repo.status.added.empty? && @repo.status.deleted.empty? && @repo.status.changed.empty?)
30
+ end
31
+
32
+ def tag_release!
33
+ output.puts "Tagging #{release_tag}"
34
+ repo.add_tag(release_tag)
35
+
36
+ output.puts "Pushing #{release_tag} to origin"
37
+ repo.push('origin', release_tag)
38
+ end
39
+
40
+ def commit_gemspec!
41
+ repo.add(gemspec_helper.path)
42
+ output.puts "Committing #{gemspec_helper.path}"
43
+ repo.commit "Regenerated gemspec for version #{version}"
44
+ end
45
+
46
+ def regenerate_gemspec!
47
+ gemspec_helper.update_version(version)
48
+ gemspec_helper.write
49
+ end
50
+
51
+ def release_tag
52
+ "v#{version}"
53
+ end
54
+
55
+ def release_tagged?
56
+ tag = repo.tag(release_tag) rescue nil
57
+ ! tag.nil?
58
+ end
59
+
60
+ def gemspec_changed?
61
+ ! any_pending_changes?
62
+ end
63
+
64
+ def gemspec_helper
65
+ @gemspec_helper ||= Jeweler::GemSpecHelper.new(self.gemspec, self.base_dir)
66
+ end
67
+
68
+ def self.build_for(jeweler)
69
+ command = self.new
70
+
71
+ command.base_dir = jeweler.base_dir
72
+ command.gemspec = jeweler.gemspec
73
+ command.version = jeweler.version
74
+ command.repo = jeweler.repo
75
+ command.output = jeweler.output
76
+ command.gemspec_helper = jeweler.gemspec_helper
77
+
78
+ command
79
+ end
80
+
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,51 @@
1
+ require 'rubyforge'
2
+
3
+ class Jeweler
4
+ module Commands
5
+ class ReleaseToRubyforge
6
+ attr_accessor :gemspec, :version, :output, :gemspec_helper, :rubyforge
7
+
8
+ def initialize
9
+ self.output = $stdout
10
+ end
11
+
12
+ def run
13
+ raise NoRubyForgeProjectInGemspecError unless @gemspec.rubyforge_project
14
+
15
+ @rubyforge.configure rescue nil
16
+
17
+ output.puts 'Logging in rubyforge'
18
+ @rubyforge.login
19
+
20
+ @rubyforge.userconfig['release_notes'] = @gemspec.description if @gemspec.description
21
+ @rubyforge.userconfig['preformatted'] = true
22
+
23
+ output.puts "Releasing #{@gemspec.name}-#{@version} to #{@gemspec.rubyforge_project}"
24
+ begin
25
+ @rubyforge.add_release(@gemspec.rubyforge_project, @gemspec.name, @version.to_s, @gemspec_helper.gem_path)
26
+ rescue StandardError => e
27
+ case e.message
28
+ when /no <group_id> configured for <#{Regexp.escape @gemspec.rubyforge_project}>/
29
+ raise RubyForgeProjectNotConfiguredError, @gemspec.rubyforge_project
30
+ when /no <package_id> configured for <#{Regexp.escape @gemspec.name}>/i
31
+ raise MissingRubyForgePackageError, @gemspec.name
32
+ else
33
+ raise
34
+ end
35
+ end
36
+ end
37
+
38
+ def self.build_for(jeweler)
39
+ command = new
40
+ command.gemspec = jeweler.gemspec
41
+ command.gemspec_helper = jeweler.gemspec_helper
42
+ command.version = jeweler.version
43
+ command.rubyforge = jeweler.rubyforge
44
+ command.output = jeweler.output
45
+
46
+ command
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,38 @@
1
+ class Jeweler
2
+ module Commands
3
+ class SetupRubyforge
4
+ attr_accessor :gemspec, :output, :rubyforge
5
+
6
+ def run
7
+ raise NoRubyForgeProjectInGemspecError unless @gemspec.rubyforge_project
8
+
9
+ @rubyforge.configure
10
+
11
+ output.puts "Logging into rubyforge"
12
+ @rubyforge.login
13
+
14
+ output.puts "Creating #{@gemspec.name} package in the #{@gemspec.rubyforge_project} project"
15
+ begin
16
+ @rubyforge.create_package(@gemspec.rubyforge_project, @gemspec.name)
17
+ rescue StandardError => e
18
+ case e.message
19
+ when /no <group_id> configured for <#{Regexp.escape @gemspec.rubyforge_project}>/
20
+ raise RubyForgeProjectNotConfiguredError, @gemspec.rubyforge_project
21
+ else
22
+ raise
23
+ end
24
+ end
25
+ end
26
+
27
+ def self.build_for(jeweler)
28
+ command = new
29
+
30
+ command.gemspec = jeweler.gemspec
31
+ command.output = jeweler.output
32
+ command.rubyforge = jeweler.rubyforge
33
+
34
+ command
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ class Jeweler
2
+ module Commands
3
+ class ValidateGemspec
4
+ attr_accessor :gemspec_helper, :output
5
+
6
+ def initialize
7
+ self.output = $stdout
8
+ end
9
+
10
+ def run
11
+ begin
12
+ gemspec_helper.parse
13
+ output.puts "#{gemspec_helper.path} is valid."
14
+ rescue Exception => e
15
+ output.puts "#{gemspec_helper.path} is invalid. See the backtrace for more details."
16
+ raise
17
+ end
18
+ end
19
+
20
+ def self.build_for(jeweler)
21
+ command = new
22
+
23
+ command.gemspec_helper = jeweler.gemspec_helper
24
+ command.output = jeweler.output
25
+
26
+ command
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,41 @@
1
+ class Jeweler
2
+ module Commands
3
+ module Version
4
+ class Base
5
+
6
+ attr_accessor :repo, :version_helper, :gemspec, :commit
7
+
8
+ def run
9
+ update_version
10
+
11
+ self.version_helper.write
12
+ self.gemspec.version = self.version_helper.to_s
13
+
14
+ commit_version if self.repo && self.commit
15
+ end
16
+
17
+ def update_version
18
+ raise "Subclasses should implement this"
19
+ end
20
+
21
+ def commit_version
22
+ if self.repo
23
+ self.repo.add(version_helper.path)
24
+ self.repo.commit("Version bump to #{self.version_helper.to_s}")
25
+ end
26
+ end
27
+
28
+
29
+ def self.build_for(jeweler)
30
+ command = new
31
+ command.repo = jeweler.repo
32
+ command.version_helper = jeweler.version_helper
33
+ command.gemspec = jeweler.gemspec
34
+ command.commit = jeweler.commit
35
+
36
+ command
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,13 @@
1
+ class Jeweler
2
+ module Commands
3
+ module Version
4
+ class BumpMajor < Base
5
+
6
+ def update_version
7
+ self.version_helper.bump_major
8
+ end
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ class Jeweler
2
+ module Commands
3
+ module Version
4
+ class BumpMinor < Base
5
+
6
+ def update_version
7
+ self.version_helper.bump_minor
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ class Jeweler
2
+ module Commands
3
+ module Version
4
+ class BumpPatch < Base
5
+
6
+ def update_version
7
+ self.version_helper.bump_patch
8
+ end
9
+
10
+ end
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,14 @@
1
+ class Jeweler
2
+ module Commands
3
+ module Version
4
+ class BumpTimestamp < Base
5
+
6
+ def update_version
7
+ self.version_helper.bump_timestamp
8
+ end
9
+
10
+ end
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,12 @@
1
+ class Jeweler
2
+ module Commands
3
+ module Version
4
+ class Write < Base
5
+ attr_accessor :major, :minor, :patch
6
+ def update_version
7
+ version_helper.update_to major, minor, patch
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end