juwelier 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +2 -0
- data/.document +8 -0
- data/.semver +5 -0
- data/.travis.yml +7 -0
- data/.yardopts +2 -0
- data/ChangeLog.markdown +230 -0
- data/Gemfile +40 -0
- data/LICENSE.txt +20 -0
- data/README.markdown +252 -0
- data/Rakefile +78 -0
- data/bin/juwelier +9 -0
- data/features/generator/cucumber.feature +103 -0
- data/features/generator/directory_layout.feature +86 -0
- data/features/generator/dotdocument.feature +13 -0
- data/features/generator/env_options.feature +9 -0
- data/features/generator/gemfile.feature +81 -0
- data/features/generator/git.feature +102 -0
- data/features/generator/license.feature +20 -0
- data/features/generator/rakefile.feature +158 -0
- data/features/generator/readme.feature +12 -0
- data/features/generator/test.feature +54 -0
- data/features/generator/test_helper.feature +149 -0
- data/features/placeholder.feature +5 -0
- data/features/step_definitions/debug_steps.rb +6 -0
- data/features/step_definitions/filesystem_steps.rb +70 -0
- data/features/step_definitions/generator_steps.rb +387 -0
- data/features/step_definitions/task_steps.rb +6 -0
- data/features/support/env.rb +41 -0
- data/features/tasks/build_gem.feature +9 -0
- data/features/tasks/version.feature +31 -0
- data/features/tasks/version_bumping.feature +49 -0
- data/juwelier.gemspec +241 -0
- data/lib/juwelier.rb +178 -0
- data/lib/juwelier/commands.rb +20 -0
- data/lib/juwelier/commands/build_gem.rb +40 -0
- data/lib/juwelier/commands/check_dependencies.rb +66 -0
- data/lib/juwelier/commands/install_gem.rb +31 -0
- data/lib/juwelier/commands/release_gemspec.rb +87 -0
- data/lib/juwelier/commands/release_to_git.rb +64 -0
- data/lib/juwelier/commands/release_to_rubygems.rb +28 -0
- data/lib/juwelier/commands/validate_gemspec.rb +30 -0
- data/lib/juwelier/commands/version/base.rb +55 -0
- data/lib/juwelier/commands/version/bump_major.rb +13 -0
- data/lib/juwelier/commands/version/bump_minor.rb +12 -0
- data/lib/juwelier/commands/version/bump_patch.rb +14 -0
- data/lib/juwelier/commands/version/write.rb +12 -0
- data/lib/juwelier/commands/write_gemspec.rb +39 -0
- data/lib/juwelier/errors.rb +8 -0
- data/lib/juwelier/gemcutter_tasks.rb +8 -0
- data/lib/juwelier/gemspec_helper.rb +87 -0
- data/lib/juwelier/generator.rb +304 -0
- data/lib/juwelier/generator/application.rb +63 -0
- data/lib/juwelier/generator/bacon_mixin.rb +43 -0
- data/lib/juwelier/generator/github_mixin.rb +22 -0
- data/lib/juwelier/generator/micronaut_mixin.rb +41 -0
- data/lib/juwelier/generator/minitest_mixin.rb +42 -0
- data/lib/juwelier/generator/options.rb +172 -0
- data/lib/juwelier/generator/rdoc_mixin.rb +13 -0
- data/lib/juwelier/generator/riot_mixin.rb +42 -0
- data/lib/juwelier/generator/rspec_mixin.rb +42 -0
- data/lib/juwelier/generator/shindo_mixin.rb +44 -0
- data/lib/juwelier/generator/shoulda_mixin.rb +42 -0
- data/lib/juwelier/generator/testspec_mixin.rb +42 -0
- data/lib/juwelier/generator/testunit_mixin.rb +39 -0
- data/lib/juwelier/generator/yard_mixin.rb +15 -0
- data/lib/juwelier/rubyforge_tasks.rb +95 -0
- data/lib/juwelier/rubygems_dot_org_tasks.rb +38 -0
- data/lib/juwelier/rubygems_tasks.rb +38 -0
- data/lib/juwelier/specification.rb +110 -0
- data/lib/juwelier/tasks.rb +239 -0
- data/lib/juwelier/templates/.document +5 -0
- data/lib/juwelier/templates/.gitignore +49 -0
- data/lib/juwelier/templates/Gemfile +12 -0
- data/lib/juwelier/templates/LICENSE.txt +20 -0
- data/lib/juwelier/templates/README.rdoc +19 -0
- data/lib/juwelier/templates/Rakefile +9 -0
- data/lib/juwelier/templates/bacon/flunking.rb +7 -0
- data/lib/juwelier/templates/bacon/helper.rb +10 -0
- data/lib/juwelier/templates/bundler_setup.erb +10 -0
- data/lib/juwelier/templates/features/default.feature +9 -0
- data/lib/juwelier/templates/features/support/env.rb +11 -0
- data/lib/juwelier/templates/juwelier_tasks.erb +31 -0
- data/lib/juwelier/templates/micronaut/flunking.rb +7 -0
- data/lib/juwelier/templates/micronaut/helper.rb +19 -0
- data/lib/juwelier/templates/minitest/flunking.rb +7 -0
- data/lib/juwelier/templates/minitest/helper.rb +13 -0
- data/lib/juwelier/templates/other_tasks.erb +70 -0
- data/lib/juwelier/templates/riot/flunking.rb +11 -0
- data/lib/juwelier/templates/riot/helper.rb +5 -0
- data/lib/juwelier/templates/rspec/.rspec +1 -0
- data/lib/juwelier/templates/rspec/flunking.rb +7 -0
- data/lib/juwelier/templates/rspec/helper.rb +14 -0
- data/lib/juwelier/templates/shindo/flunking.rb +8 -0
- data/lib/juwelier/templates/shindo/helper.rb +7 -0
- data/lib/juwelier/templates/shoulda/flunking.rb +7 -0
- data/lib/juwelier/templates/shoulda/helper.rb +12 -0
- data/lib/juwelier/templates/simplecov.erb +16 -0
- data/lib/juwelier/templates/testspec/flunking.rb +7 -0
- data/lib/juwelier/templates/testspec/helper.rb +7 -0
- data/lib/juwelier/templates/testunit/flunking.rb +7 -0
- data/lib/juwelier/templates/testunit/helper.rb +11 -0
- data/lib/juwelier/version.rb +10 -0
- data/lib/juwelier/version_helper.rb +141 -0
- data/test/fixtures/bar/VERSION.yml +4 -0
- data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
- data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
- data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
- data/test/fixtures/existing-project-with-version-constant/.document +5 -0
- data/test/fixtures/existing-project-with-version-constant/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-constant/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-constant/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-constant/Rakefile +85 -0
- data/test/fixtures/existing-project-with-version-constant/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-constant/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-constant/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-constant/test/test_helper.rb +10 -0
- data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-plaintext/Rakefile +84 -0
- data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
- data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
- data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
- data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-yaml/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-yaml/Rakefile +84 -0
- data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
- data/test/fixtures/existing-project-with-version-yaml/bin/foo_the_ultimate_bin +0 -0
- data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
- data/test/geminstaller.yml +12 -0
- data/test/juwelier/commands/test_build_gem.rb +112 -0
- data/test/juwelier/commands/test_install_gem.rb +35 -0
- data/test/juwelier/commands/test_release_to_gemcutter.rb +39 -0
- data/test/juwelier/commands/test_release_to_git.rb +271 -0
- data/test/juwelier/commands/test_release_to_github.rb +477 -0
- data/test/juwelier/commands/test_validate_gemspec.rb +27 -0
- data/test/juwelier/commands/test_write_gemspec.rb +103 -0
- data/test/juwelier/commands/version/test_base.rb +53 -0
- data/test/juwelier/commands/version/test_bump_major.rb +22 -0
- data/test/juwelier/commands/version/test_bump_minor.rb +19 -0
- data/test/juwelier/commands/version/test_bump_patch.rb +20 -0
- data/test/juwelier/commands/version/test_write.rb +22 -0
- data/test/juwelier/generator/test_application.rb +142 -0
- data/test/juwelier/generator/test_options.rb +227 -0
- data/test/juwelier/test_gemspec_helper.rb +44 -0
- data/test/juwelier/test_generator.rb +140 -0
- data/test/juwelier/test_generator_initialization.rb +150 -0
- data/test/juwelier/test_generator_mixins.rb +23 -0
- data/test/juwelier/test_specification.rb +245 -0
- data/test/juwelier/test_tasks.rb +50 -0
- data/test/juwelier/test_version_helper.rb +214 -0
- data/test/shoulda_macros/juwelier_macros.rb +35 -0
- data/test/test_helper.rb +174 -0
- data/test/test_juwelier.rb +177 -0
- metadata +396 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 621d398e6a31048ab948445b73d4b209a91e1259
|
4
|
+
data.tar.gz: a0a014f68608f6d0e58e8fc21501dbb6fe81f658
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b6d821fae7513c818a0d119f5edcb5ecfcfa0d978b51fbe0d0c2b32ca07dbf897c422284a2863a875740bc98b1f12e075e9968db9549b005a9ab5b48418c8129
|
7
|
+
data.tar.gz: d967129bbe7d3bdd07eff2ff52631457afae23671fdec9fb885f004d2a345a8723b1a18a4952565db8c16c1400b3572dd51419d2be284e0519469ddde2d80c0c
|
data/.coveralls.yml
ADDED
data/.document
ADDED
data/.semver
ADDED
data/.travis.yml
ADDED
data/.yardopts
ADDED
data/ChangeLog.markdown
ADDED
@@ -0,0 +1,230 @@
|
|
1
|
+
# juwelier 2.1.0, 2016-02-06
|
2
|
+
|
3
|
+
* Forked from the unmaintained Jeweler
|
4
|
+
* Reworked and modernized to work with Ruby 2.3.0
|
5
|
+
* Incorporated semver to maintain its versioning
|
6
|
+
|
7
|
+
# jeweler 2.0.0, 2014-01-05
|
8
|
+
|
9
|
+
* Ruby 1.8 is not supported anymore.
|
10
|
+
* rake release accepts remote and branches #249
|
11
|
+
|
12
|
+
# jeweler 1.8.7, 2013-08-12
|
13
|
+
|
14
|
+
* Lock timecop version to 0.6.1 to keep support of 1.8.7 #243
|
15
|
+
* Bump version in version.rb to reflect released gem version
|
16
|
+
* jeweler's Rakefile reads version from version.rb
|
17
|
+
|
18
|
+
# jeweler 1.8.6, 2013-07-04
|
19
|
+
|
20
|
+
* Fix dependency error when install #239
|
21
|
+
|
22
|
+
# jeweler 1.8.5, 2013-06-29
|
23
|
+
|
24
|
+
* Support rubygems 2.x #238
|
25
|
+
|
26
|
+
# jeweler 1.8.2, 2012-01-24
|
27
|
+
|
28
|
+
* Fixed jeweler's circular dependency on itself #224
|
29
|
+
|
30
|
+
# jeweler 1.8.2, 2012-01-24
|
31
|
+
|
32
|
+
* Standardize on invoking jeweler in development: bundle exec jeweler #220
|
33
|
+
* Add travis-ci configuration and build status to README #222
|
34
|
+
* Updated version of rspec used by generator to 2.8.0 #223
|
35
|
+
|
36
|
+
# jeweler 1.8.1, 2012-01-24
|
37
|
+
|
38
|
+
* Generated projects using yard now use ~> 0.7.4 #219
|
39
|
+
|
40
|
+
# jeweler 1.8.0, 2012-01-23
|
41
|
+
|
42
|
+
* Generator now has a --version flag #217
|
43
|
+
* Generated Gemfile now includes rdoc gem when using rdoc
|
44
|
+
* Fixed jeweler's yardoc task #216
|
45
|
+
* Updated version of yard used for new projects, and include rdoc compatability
|
46
|
+
|
47
|
+
# jeweler 1.7.0, 2012-01-23
|
48
|
+
|
49
|
+
* Better grammars in README!
|
50
|
+
* Generated Rakefile no longer uses deprecated rake/rdoctask
|
51
|
+
* Added `rake clean`
|
52
|
+
* `rake release` calls `rake clean` to avoid packaging built gems in pkg #216
|
53
|
+
|
54
|
+
# jeweler 1.6.4, 2011-07-07
|
55
|
+
|
56
|
+
* Generator can now take an path to generate into, rather than just the name of the directory, ie `jeweler /path/to/awesomeness', not `jeweler --directory /path/to awesomeness`. Thanks invadersmustdie! #187
|
57
|
+
* Generator's --directory is deprecated and will be removed for 2.0.0
|
58
|
+
|
59
|
+
# jeweler 1.6.3
|
60
|
+
|
61
|
+
* Fix typo in Rake tasks, thanks yehezkielbs! #193
|
62
|
+
* Fix deprecation warnings for `Gem.activate`, thanks tickmichaeledgar! #191
|
63
|
+
|
64
|
+
# jeweler 1.6.2
|
65
|
+
|
66
|
+
* Loosen bundler dependency to work with 1.x #180
|
67
|
+
|
68
|
+
# jeweler 1.6.1
|
69
|
+
|
70
|
+
* Fix "undefined method 'sh'" when using rake 0.9.0 #181, #182, #184
|
71
|
+
|
72
|
+
# jeweler 1.6.0
|
73
|
+
|
74
|
+
* Fix generated RCov task to exclude gems
|
75
|
+
* Generated .gitignore includes example for rubinius and redcar
|
76
|
+
* Generated Rakefile includes magic utf-8 comment for better UTF-8 support #20
|
77
|
+
* Generated Jeweler::Tasks now correctly documents that dependencies are managed in the Gemfile
|
78
|
+
* Workaround issues with ruby 1.9.2 and psych #169
|
79
|
+
* No longer deals with `test_files` #178
|
80
|
+
* JEWELER_OPTS are overridden by command line flags #178
|
81
|
+
|
82
|
+
# jeweler 1.5.1
|
83
|
+
|
84
|
+
* TODO
|
85
|
+
|
86
|
+
# jeweler 1.5.0
|
87
|
+
|
88
|
+
* TODO
|
89
|
+
|
90
|
+
# jeweler 1.4.0 2009-11-19
|
91
|
+
|
92
|
+
* Generator now adds gemcutter support by default. Disable it with --no-gemcutter
|
93
|
+
* Generator now creates a reek task that works with the latest reek. If you have a previously generated project using it, you may need to change the require line to: require 'reek/adapters/rake_task'
|
94
|
+
* Generator now exits with the correct exit code
|
95
|
+
* `rake install` no longer uses `sudo` to install. If your ruby configuration needs sudo to install, use `sudo rake install` instead.
|
96
|
+
* `rake install` now correctly installs dependencies as well
|
97
|
+
* `rake install` should correctly figure out which `gem` binary to invoke now
|
98
|
+
* `rake build` now will regenerate the gemspec as well
|
99
|
+
* `rake gemspec` now eliminates duplicates for gemspec.files, gemspec.rdoc_files, etc
|
100
|
+
* `rake gemspec` now automatically populates gemspec.extensions with any extconf.rb files you have in `ext`
|
101
|
+
* Releasing to Rubyforge is now deprecated in favor of Gemcutter.
|
102
|
+
|
103
|
+
# jeweler 1.3.0
|
104
|
+
|
105
|
+
* Now supports an additional version type, build. This can be used to add a fourth segment of the version that's arbitrary. One example use is having prereleases.
|
106
|
+
* Jeweler now lazily loads, to avoid causing side-effects when running other rake tasks
|
107
|
+
* Version can now be set explicitly on the gemspec, rather than relying on a VERSION file
|
108
|
+
* Rubyforge and Gemcutter support now hooks into `rake release`
|
109
|
+
* `rake build` now uses an in-memory copy of the gemspec, rather than the filesystem persisted one
|
110
|
+
* Rubyforge support no longer forces the uploading of documentation
|
111
|
+
* Generator:
|
112
|
+
* Allow arbitrary homepage and git remotes, to decouple a bit from GitHub
|
113
|
+
* Support for the riot testing framework: http://github.com/thumblemonks/riot/
|
114
|
+
* Support for test/spec
|
115
|
+
* .gitignore now ignores emacs temporary files
|
116
|
+
* rspec support now creates a spec.opts with support for color and other stuff
|
117
|
+
* Updated minitest support (formally miniunit)
|
118
|
+
* Improved support for autotest
|
119
|
+
|
120
|
+
# jeweler 1.2.0 2009-08-06
|
121
|
+
* Generator now adds development dependencies appropriate to your testing framework
|
122
|
+
* Added check_dependencies tasks for verifying gem dependencies are installed
|
123
|
+
* Fixed typo in generated yard task
|
124
|
+
* Fixed generator from having a lot of extra newlines
|
125
|
+
|
126
|
+
# jeweler 1.1.0 2009-08-05
|
127
|
+
|
128
|
+
* Support for generating a project that uses yard instead of rdoc
|
129
|
+
* Generated gemspec now includes comments about it being generated by jeweler
|
130
|
+
* Only use sudo for installing on non-windows platforms [#1]
|
131
|
+
* Fixed rake release to be repeatable on the same version [#16]
|
132
|
+
* Fixed rake rubyforge:setup to not create duplicate packages
|
133
|
+
* Use a more recent version of ruby-git
|
134
|
+
* Fixes various issues with reading values out of ~/.gitconfig [#26] [#21] [#19]
|
135
|
+
* Experimenting with a rake task to check development time dependencies [#22]
|
136
|
+
* Fixed generated rdoc task to load from VERSION instead of VERSION.yml
|
137
|
+
|
138
|
+
# jeweler 1.0.2 2009-07-29
|
139
|
+
|
140
|
+
* Don't include git ignored files for default gemspec's files and test_files
|
141
|
+
* Fixed rspec generator to allow specs to be run directly
|
142
|
+
* Removed misleading docstring for version_required rake task [#17]
|
143
|
+
* Includes some notes about contributed in generated README
|
144
|
+
* Added support for generating a project to use reek and roodi
|
145
|
+
|
146
|
+
# jeweler 1.0.1 2009-05-15
|
147
|
+
|
148
|
+
# jeweler 0.11.1
|
149
|
+
|
150
|
+
* Lots of internal refactorings to how project generation happens
|
151
|
+
* Fixed missing dependency on rubyforge
|
152
|
+
* Depend on a recent version of schacon-git which works on ruby 1.9
|
153
|
+
* Updated cucumber support for 0.3.x
|
154
|
+
* Tested on Ruby 1.9
|
155
|
+
|
156
|
+
# jeweler 0.11.0 2009-04-05
|
157
|
+
|
158
|
+
* generator will respect JEWELER_OPTS, as a way to provide default options
|
159
|
+
(pat-maddox)
|
160
|
+
* Include 'examples' and 'rails' directories by default in gemspec files
|
161
|
+
* generated gemspec now will only include files (not directories). also, they are listed one per line, and sorted.
|
162
|
+
* Jeweler::Tasks's intializer has been improved:
|
163
|
+
* You can now pass it an existing gemspec (othewise a new one will be created)
|
164
|
+
* Jeweler sets its defaults before yielding the gemspec to you. This allows you to append to its defaults, so you aren't forced to entirely overwrite them just to add one value.
|
165
|
+
* Managing a gemspec's files, test_files, and extra_rdoc_files is now more flexible. They are now wrapped in a FileList, so you can easily 'include' or 'exclude' patterns.
|
166
|
+
|
167
|
+
# jeweler 0.10.2 2009-03-26
|
168
|
+
|
169
|
+
* 'rake install' now will 'rake build' first
|
170
|
+
* Support for releasing to RubyForge, thanks to jtrupiano
|
171
|
+
* Steps towards Ruby 1.9 support, thanks to rsanheim
|
172
|
+
|
173
|
+
# jeweler 0.9.1 2009-03-05
|
174
|
+
|
175
|
+
* Tasks:
|
176
|
+
* Fixed populating default spec's extra_rdoc_files
|
177
|
+
* Removed redundant gem building/installing tasks. Use rake build and rake install
|
178
|
+
* Generator:
|
179
|
+
* Added support for micronaut
|
180
|
+
* Generate nicer block variable names in Rakefile
|
181
|
+
* Cucumber generation now places steps in features/step_features, to follow cucumber standards
|
182
|
+
|
183
|
+
* shoulda and test/unit test_helpers no longer require mocha
|
184
|
+
* Rakefile uses more readable block variable names
|
185
|
+
* .gitignore now includes pkg and coverage directories
|
186
|
+
* Avoid puts'ing in Rakefile when LoadError occurs. Instead, define a task that aborts with instructions to install.
|
187
|
+
* Cucumber is now optional. Generate stories using --cucumber
|
188
|
+
* Bacon's 'test' task is now 'spec'
|
189
|
+
* Generate README.rdoc instead of just a plain text README
|
190
|
+
* Updated year in README.rdoc and COPYRIGHT to be based on the current year instead of hardcoded
|
191
|
+
|
192
|
+
# jeweler 0.8.1 2009-02-03
|
193
|
+
|
194
|
+
* Fixed minitest generator
|
195
|
+
|
196
|
+
# jeweler 0.8.0 2009-02-03
|
197
|
+
|
198
|
+
* Generator:
|
199
|
+
* Supports these new testing frameworks:
|
200
|
+
* test/unit
|
201
|
+
* minitest
|
202
|
+
* rspec
|
203
|
+
* Added support for cucumber
|
204
|
+
* Creating a new gem is now more verbose, and will show files/directories created
|
205
|
+
* Binaries will now be automatically detected in 'bin'
|
206
|
+
|
207
|
+
# jeweler 0.7.2 2009-01-29
|
208
|
+
|
209
|
+
* Added rake task 'version:bump' which is shorthand for 'version:bump:patch'
|
210
|
+
* Generated projects no longer assume RCov is installed.
|
211
|
+
|
212
|
+
# jeweler 0.7.1 2009-01-26
|
213
|
+
|
214
|
+
* Fixed yaml not being required
|
215
|
+
* Automatically add files in bin as executables in gemspec
|
216
|
+
|
217
|
+
# jeweler 0.7.0 2009-01-19
|
218
|
+
|
219
|
+
* Added support to generator for specifying a description
|
220
|
+
* Condensed README.markdown to be less novel-like
|
221
|
+
* RDoc is now included in your gemspec
|
222
|
+
* Rescue errors that raise in the generator, and display better error message, and exit with a non-zero exit status
|
223
|
+
|
224
|
+
# jeweler 0.6.5 2009-01-14
|
225
|
+
|
226
|
+
* `jeweler --create-repo foo` now enables gem creation in addition to creating the repository
|
227
|
+
|
228
|
+
# jeweler 0.6.4 2009-01-13
|
229
|
+
|
230
|
+
* Added tasks `build` and `install` as shortcuts for `gem:build` and `gem:install`
|
data/Gemfile
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
gem "rake"
|
4
|
+
gem "git", ">= 1.2.5"
|
5
|
+
gem "nokogiri", ">= 1.5.10"
|
6
|
+
gem "github_api"
|
7
|
+
gem "highline", ">= 1.6.15"
|
8
|
+
gem "bundler", ">= 1.0"
|
9
|
+
gem "rdoc"
|
10
|
+
gem "builder"
|
11
|
+
|
12
|
+
group :development do
|
13
|
+
gem "yard", ">= 0.8.5"
|
14
|
+
gem "bluecloth"
|
15
|
+
gem "cucumber", ">= 1.1.4"
|
16
|
+
gem "simplecov"
|
17
|
+
gem "semver"
|
18
|
+
end
|
19
|
+
|
20
|
+
group :test do
|
21
|
+
gem "timecop"
|
22
|
+
gem "activesupport", "~> 3.2.16"
|
23
|
+
gem "shoulda"
|
24
|
+
gem "mhennemeyer-output_catcher"
|
25
|
+
gem "rr", ">= 1.0.4"
|
26
|
+
gem "mocha"
|
27
|
+
gem "redgreen"
|
28
|
+
gem "test-construct"
|
29
|
+
gem 'coveralls', :require => false
|
30
|
+
end
|
31
|
+
|
32
|
+
# yo dawg, i herd u lieked juwelier
|
33
|
+
group :xzibit do
|
34
|
+
# steal a page from bundler's gemspec:
|
35
|
+
# add this directory as juwelier, in order to bundle exec juwelier and use the current working directory
|
36
|
+
gem 'juwelier', :path => '.'
|
37
|
+
end
|
38
|
+
|
39
|
+
group :debug do
|
40
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2016 Fred Mitchell
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
@@ -0,0 +1,252 @@
|
|
1
|
+
# Juwelier: Craft the perfect RubyGem for Ruby 2.3.x and Beyond
|
2
|
+
|
3
|
+
Provides the noble ruby developer with two primary features:
|
4
|
+
|
5
|
+
* a library or managing and releasing RubyGem projects
|
6
|
+
* a scaffold generator for starting new RubyGem projects
|
7
|
+
|
8
|
+
[![Build Status](https://travis-ci.org/flajann2/juwelier.png)](https://travis-ci.org/flajann2/juwelier)
|
9
|
+
[![Coverage Status](https://coveralls.io/repos/flajann2/juwelier/badge.png)](https://coveralls.io/r/flajann2/juwelier)
|
10
|
+
[![Dependency Status](https://www.versioneye.com/ruby/juwelier/2.0.0/badge.png)](https://www.versioneye.com/ruby/juwelier/2.0.0)
|
11
|
+
|
12
|
+
Note that his has been forked from the old Jeweler by Josh Nichols
|
13
|
+
due to lack of maintenance. I need this to work alread with the
|
14
|
+
latest Ruby, so I've taken it over. All is cool because
|
15
|
+
sometimes we move on and loose interest. I wish to thank
|
16
|
+
Josh and others who were behind the original Jeweler for
|
17
|
+
creating this awesome tool.
|
18
|
+
|
19
|
+
Note that if you have a preexisting project created with
|
20
|
+
Jeweler, you may have some issues. Eventally I will provide
|
21
|
+
a migration option, but in the meantime, you may wish to
|
22
|
+
run these sed commands on all your files:
|
23
|
+
|
24
|
+
sed -i 's/jeweler/juwelier/g' filename
|
25
|
+
sed -i 's/Jeweler/Juwelier/g' filename
|
26
|
+
|
27
|
+
As you probably know, "Juwelier" is "Jeweler" in German. Since I
|
28
|
+
have made Germany my new home, it only seemed approporiate.
|
29
|
+
|
30
|
+
## Hello, world
|
31
|
+
|
32
|
+
Use RubyGems to install the heck out of juwelier to get started:
|
33
|
+
|
34
|
+
$ gem install juwelier
|
35
|
+
|
36
|
+
With juwelier installed, you can use the `juwelier` command to generate a new project. For the most basic use, just give it a name:
|
37
|
+
|
38
|
+
$ juwelier hello-gem
|
39
|
+
|
40
|
+
This requires some Git configuration (like name, email, GitHub account, etc), but `juwelier` will prompt along the way.
|
41
|
+
|
42
|
+
Your new `hello-gem` gem is ready in the `hello-gem` directory. Take a peek, and you'll see several files and directories
|
43
|
+
|
44
|
+
* `Rakefile` setup for juwelier, running tests, generating documentation, and releasing to [rubygems.org](http://rubygems.org/)
|
45
|
+
* `README.rdoc` with contribution guidelines and copyright info crediting you
|
46
|
+
* `LICENSE` with the MIT licensed crediting you
|
47
|
+
* `Gemfile` with development dependencies filled in
|
48
|
+
* `lib/hello-gem.rb` waiting for you to code
|
49
|
+
* `test/` containing a (failing) shoulda test suite [shoulda](http://github.com/thoughtbot/shoulda)
|
50
|
+
|
51
|
+
|
52
|
+
### More `juwelier` options
|
53
|
+
|
54
|
+
The `juwelier` command supports a lot of options. Mostly, they are for generating baked in support for this test framework, or that.
|
55
|
+
|
56
|
+
Check out `juwelier --help` for the most up to date options.
|
57
|
+
|
58
|
+
## Hello, rake tasks
|
59
|
+
|
60
|
+
Beyond just editing source code, you'll be interacting with your gem using `rake` a lot. To see all the tasks available with a brief description, you can run:
|
61
|
+
|
62
|
+
$ rake -T
|
63
|
+
|
64
|
+
You'll need a version before you can start installing your gem locally. The easiest way is with the `version:write` Rake task. Let's imagine you start with 0.1.0
|
65
|
+
|
66
|
+
$ rake version:write MAJOR=0 MINOR=1 PATCH=0
|
67
|
+
|
68
|
+
You can now go forth and develop, now that there's an initial version defined. Eventually, you should install and test the gem:
|
69
|
+
|
70
|
+
$ rake install
|
71
|
+
|
72
|
+
The `install` rake task builds the gem and `gem install`s it. You're all set if you're using [RVM](http://rvm.beginrescueend.com/), but you may need to run it with sudo if you have a system-installed ruby:
|
73
|
+
|
74
|
+
$ sudo rake install
|
75
|
+
|
76
|
+
### Releasing
|
77
|
+
|
78
|
+
At last, it's time to [ship it](http://shipitsquirrel.github.com/)! Make sure you have everything committed and pushed, then go wild:
|
79
|
+
|
80
|
+
$ rake release
|
81
|
+
|
82
|
+
This will automatically:
|
83
|
+
|
84
|
+
*Juwelier Generate `hello-gem.gemspec` and commit it
|
85
|
+
* Use `git` to tag `v0.1.0` and push it
|
86
|
+
* Build `hello-gem-0.1.0.gem` and push it to [rubygems.org](http://rubygems.org/gems/)
|
87
|
+
|
88
|
+
`rake release` accepts REMOTE(default: `origin`), LOCAL_BRANCH(default: `master`), REMOTE_BRANCH(default: `master`) and BRANCH(default: master)as options.
|
89
|
+
|
90
|
+
$ rake release REMOTE=upstream LOCAL_BRANCH=critical-security-fix REMOTE_BRANCH=v3
|
91
|
+
|
92
|
+
This will tag and push the commits on your local branch named `critical-security-fix` to branch named `v3` in remote named `upstream` (if you have commit rights
|
93
|
+
on `upstream`) and release the gem.
|
94
|
+
|
95
|
+
$ rake release BRANCH=v3
|
96
|
+
|
97
|
+
If both remote and local branches are the same, use `BRANCH` option to simplify.
|
98
|
+
This will tag and push the commits on your local branch named `v3` to branch named `v3` in remote named `origin` (if you have commit rights
|
99
|
+
on `origin`) and release the gem.
|
100
|
+
|
101
|
+
### Version bumping
|
102
|
+
|
103
|
+
It feels good to release code. Do it, do it often. But before that, bump the version. Then release it. There's a few ways to update the version:
|
104
|
+
|
105
|
+
# version:write like before
|
106
|
+
$ rake version:write MAJOR=0 MINOR=3 PATCH=0
|
107
|
+
|
108
|
+
# bump just major, ie 0.1.0 -> 1.0.0
|
109
|
+
$ rake version:bump:major
|
110
|
+
|
111
|
+
# bump just minor, ie 0.1.0 -> 0.2.0
|
112
|
+
$ rake version:bump:minor
|
113
|
+
|
114
|
+
# bump just patch, ie 0.1.0 -> 0.1.1
|
115
|
+
$ rake version:bump:patch
|
116
|
+
|
117
|
+
Then it's the same `release` we used before:
|
118
|
+
|
119
|
+
$ rake release
|
120
|
+
|
121
|
+
## Customizing your gem
|
122
|
+
|
123
|
+
If you've been following along so far, your gem is just a blank slate. You're going to need to make it colorful and full of metadata.
|
124
|
+
|
125
|
+
You can customize your gem by updating your `Rakefile`. With a newly generated project, it will look something like this:
|
126
|
+
|
127
|
+
Juwelier require 'juwelier'
|
128
|
+
::Tasks.new do |gem|
|
129
|
+
# gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
|
130
|
+
gem.name = "whatwhatwhat"
|
131
|
+
gem.summary = %Q{TODO: one-line summary of your gem}
|
132
|
+
gem.description = %Q{TODO: longer description of your gem}
|
133
|
+
gem.email = "fred.mitchell@gmx.com"
|
134
|
+
gem.homepage = "http://github.com/flajann2/whatwhatwhat"
|
135
|
+
Juwelier gem.authors = ["Joshua Nichols"]
|
136
|
+
end
|
137
|
+
JuwelierJuwelier ::RubygemsDotOrgTasks.new
|
138
|
+
|
139
|
+
It's crucial to understand the `gem` object is just a Gem::Specification. You can read up about it at [guides.rubygems.org/specification-reference](http://guides.rubygems.org/specification-reference/). This is the most basic way of specifying a gem, -managed or not. just exposes this to you, in addition to providing some reasonable defaults, which we'll explore now.
|
140
|
+
|
141
|
+
### Project information
|
142
|
+
|
143
|
+
gem.name = "whatwhatwhat"
|
144
|
+
|
145
|
+
Every gem has a name. Among other things, the gem name is how you are able to `gem install` it. [Reference](http://guides.rubygems.org/specification-reference/#name)
|
146
|
+
|
147
|
+
gem.summary = %Q{TODO: one-line summary of your gem}
|
148
|
+
|
149
|
+
This is a one line summary of your gem. This is displayed, for example, when you use `gem list --details` or view it on [rubygems.org](http://rubygems.org/gems/).
|
150
|
+
|
151
|
+
gem.description = %Q{TODO: longer description of your gem}
|
152
|
+
|
153
|
+
Description is a longer description. Scholars ascertain that knowledge of where the description is used was lost centuries ago.
|
154
|
+
|
155
|
+
gem.email = "fred.mitchell@gmx.com"
|
156
|
+
|
157
|
+
This should be a way to get a hold of you regarding the gem.
|
158
|
+
|
159
|
+
gem.homepage = "http://github.com/flajann2/whatwhatwhat"
|
160
|
+
|
161
|
+
The homepage should have more information about your gem. The juwelier generator guesses this based on the assumption your code lives on [GitHub](http://github.com/), using your Git configuration to find your GitHub username. This is displayed by `gem list --details` and on rubygems.org.
|
162
|
+
|
163
|
+
gem.authors = ["Joshua Nichols"]
|
164
|
+
|
165
|
+
Hey, this is you, the author (or me in this case). The `juwelier` generator also guesses this from your Git configuration. This is displayed by `gem list --details` and on rubygems.org.
|
166
|
+
|
167
|
+
##Juwelier# Files
|
168
|
+
|
169
|
+
ThJuweliere quickest way to add more files is to `git add` them. uses your Git repository to populate your gem's files by including added and committed and excluding `.gitignore`d. In most cases, this is reasonable enough.
|
170
|
+
|
171
|
+
If you need to tweak the files, that's cool. populates `gem.files` as a `Rake::FileList`. It's like a normal array, except you can `include` and `exclude` file globs:
|
172
|
+
|
173
|
+
gem.files.exclude 'tmp' # exclude temporary directory
|
174
|
+
gem.files.include 'lib/foo/bar.rb' # explicitly include lib/foo/bar.rb
|
175
|
+
|
176
|
+
If that's not enough, you can just set `gem.files` outright
|
177
|
+
|
178
|
+
gem.files = Dir.glob('lib/**/*.rb')
|
179
|
+
|
180
|
+
### Dependencies
|
181
|
+
|
182
|
+
Dependencies let you define other gems that your gem needs to function. `gem install your-gem` will install your-gem's dependencies along with it, and when you use your-gem in an application, the dependencies will be made available. Use `gem.add_dependency` to register them. [Reference](http://guides.rubygems.org/specification-reference/#add_development_dependency)
|
183
|
+
|
184
|
+
gem.add_dependency 'nokogiri'
|
185
|
+
|
186
|
+
This will ensure a version of `nokogiri` is installed, but it doesn't require anything more than that. You can provide extra args to be more specific:
|
187
|
+
|
188
|
+
gem.add_dependency 'nokogiri', '= 1.2.1' # exactly version 1.2.1
|
189
|
+
gem.add_dependency 'nokogiri', '>= 1.2.1' # greater than or equal to 1.2.1, ie, 1.2.1, 1.2.2, 1.3.0, 2.0.0, etc
|
190
|
+
gem.add_dependency 'nokogiri', '>= 1.2.1', '< 1.3.0' # greater than or equal to 1.2.1, but less than 1.3.0
|
191
|
+
gem.add_dependency 'nokogiri', '~> 1.2.1' # same thing, but more concise
|
192
|
+
|
193
|
+
When specifying which version is required, there's a bit of the condunrum. You want to allow the most versions possible, but you want to be sure they are compatible. Using `>= 1.2.1` is fine most of the time, except until the point that 2.0.0 comes out and totally breaks backwards the API. That's when it's good to use `~> 1.2.1`, which requires any version in the `1.2` family, starting with `1.2.1`.
|
194
|
+
|
195
|
+
##Juwelier# Executables
|
196
|
+
|
197
|
+
Executables let your gem install shell commands. Just put any executable scripts in the `bin/` directory, make sure they are added using `git`, and will take care of the rest.
|
198
|
+
|
199
|
+
When you need more finely grained control over it, you can set it yourself:
|
200
|
+
|
201
|
+
gem.executables = ['foo'] # note, it's the file name relative to `bin/`, not the project root
|
202
|
+
|
203
|
+
### Versioning
|
204
|
+
|
205
|
+
WeJuwelierJuwelier discussed earlier how to bump the version. The rake tasks are really just convience methods for manipulating the `VERSION` file. It just contains a version string, like `1.2.3`.
|
206
|
+
|
207
|
+
`VERSION` is a convention used by , and is used to populate `gem.version`. You can actually set this yourself, and won't try to override it:
|
208
|
+
|
209
|
+
gem.version = '1.2.3'
|
210
|
+
|
211
|
+
A common pattern is to have this in a version constant in your library. This is convenient, because users of the library can query the version they are using at runtime.
|
212
|
+
|
213
|
+
# in lib/foo/version.rb
|
214
|
+
class Foo
|
215
|
+
module Version
|
216
|
+
MAJOR = 1
|
217
|
+
MINOR = 2
|
218
|
+
PATCH = 3
|
219
|
+
BUILD = 'pre3'
|
220
|
+
|
221
|
+
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
# in Rakefile
|
226
|
+
Juwelier require 'juwelier'
|
227
|
+
require './lib/foo/version.rb'
|
228
|
+
::Tasks.new do |gem|
|
229
|
+
# snip
|
230
|
+
gem.version = Foo::Version::STRING
|
231
|
+
end
|
232
|
+
|
233
|
+
##Juwelier# Rake tasks
|
234
|
+
|
235
|
+
lives inside of Rake. As a result, they are dear friends. But, that friendship doesn't interfere with typical Rake operations.
|
236
|
+
|
237
|
+
The Juwelier Rake means you can define your own namespaces, tasks, or use third party Rake libraries without cause for concern.
|
238
|
+
|
239
|
+
## Contributing to
|
240
|
+
|
241
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
242
|
+
* Ask on the [mailing list](http://groups.google.com/group/juwelier-rb) for feedback on your proposal, to see if somebody else has done it.
|
243
|
+
* Check out the [issue tracker](http://github.com/flajann2/juwelier/issues) to make sure someone already hasn't requested it and/or contributed it
|
244
|
+
* Fork the project
|
245
|
+
* Start a feature/bugfix branch
|
246
|
+
* Commit and push until you are happy with your contribution
|
247
|
+
* Make sure to add tests for the feature/bugfix. This is important so I don't break it in a future version unintentionally.
|
248
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate it to its own commit so I can cherry-pick around it.
|
249
|
+
|
250
|
+
## Copyright
|
251
|
+
|
252
|
+
Copyright (c) 2016 Fred Mitchell. See LICENSE for details.
|