gemesis 0.0.3 → 0.0.4
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/README.rdoc +46 -7
- data/bin/collect_gems +48 -0
- data/lib/gemesis/rake.rb +44 -2
- metadata +12 -6
data/README.rdoc
CHANGED
@@ -2,16 +2,55 @@
|
|
2
2
|
|
3
3
|
This is a gem that provides some simple rake tasks for managing a rubygem.
|
4
4
|
|
5
|
-
==
|
5
|
+
== creating a gem
|
6
|
+
|
7
|
+
=== create a gem specification file called gemspec
|
8
|
+
|
9
|
+
For example:
|
10
|
+
|
11
|
+
Gem::Specification.new do |s|
|
12
|
+
s.name = 'gemesis'
|
13
|
+
s.version = '0.0.4'
|
14
|
+
s.summary = 'some lightweight utilities to assist in managing a rubygem'
|
15
|
+
s.authors << 'Mark Ryall'
|
16
|
+
s.email = 'mark@ryall.name'
|
17
|
+
s.homepage = %q{http://github.com/markryall/gemesis}
|
18
|
+
s.files = Dir['bin/*'] + Dir['lib/**/*'] + ['README.rdoc', 'MIT-LICENSE']
|
19
|
+
s.executables << 'collect_gems'
|
20
|
+
end
|
21
|
+
|
22
|
+
Make sure the version line is formatted as indicated - the major, minor and patch tasks will not work otherwise.
|
23
|
+
|
24
|
+
=== initialise a git or mercurial repository
|
25
|
+
|
26
|
+
hg/git init
|
6
27
|
|
7
|
-
|
28
|
+
=== create Rakefile
|
8
29
|
|
9
|
-
|
10
|
-
require 'gemesis/rake'
|
11
|
-
</tt>
|
30
|
+
require 'gemesis/rake'
|
12
31
|
|
13
|
-
|
32
|
+
== usage
|
33
|
+
|
34
|
+
This will add the following rake tasks in a gem namespace:
|
35
|
+
|
36
|
+
* release - push, then increments version in gemspec
|
37
|
+
* push - builds the gem, pushes to rubyforge and
|
38
|
+
* build - builds the gem file
|
39
|
+
* install - installs the gem file
|
40
|
+
* uninstall - uninstalls the gem
|
41
|
+
* reinstall - uninstalls and installs the gem
|
42
|
+
* major - increments the major version number
|
43
|
+
* minor - increments the minor version number
|
44
|
+
* patch - increments the patch number
|
14
45
|
|
15
46
|
To run gem installation or uninstallation with sudo - set an environment variable SUDO to sudo
|
16
47
|
|
17
|
-
Note that push will create a repository tag so it is recommended you increment the gem version and commit all changes prior to executing a push.
|
48
|
+
Note that push will create a repository tag so it is recommended you increment the gem version and commit all changes prior to executing a push.
|
49
|
+
|
50
|
+
Refer to http://semver.org/ for some sensible tips on versioning.
|
51
|
+
|
52
|
+
== collect_gems
|
53
|
+
|
54
|
+
If you checkout any gem that uses gemesis (or has a gem specification file caled gemspec), you can use the collect_gems executable to install all necessary runtime and development depencies.
|
55
|
+
|
56
|
+
collect_gems was completely stolen from http://github.com/mdub/gem_collector
|
data/bin/collect_gems
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
|
5
|
+
module GemCollector
|
6
|
+
extend self
|
7
|
+
|
8
|
+
# Shadow Kernel#gem, extending it to auto-install missing gems
|
9
|
+
def gem(name, *version_requirements)
|
10
|
+
dependency = Gem::Dependency.new(name, *version_requirements)
|
11
|
+
if Gem.source_index.search(dependency).empty?
|
12
|
+
puts "Installing #{dependency}"
|
13
|
+
`gem install #{name} --version \"#{version_requirements.first}\"`
|
14
|
+
else
|
15
|
+
puts "#{dependency} is already installed"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def eval_block &block
|
20
|
+
instance_eval &block
|
21
|
+
end
|
22
|
+
|
23
|
+
def eval(*args)
|
24
|
+
instance_eval(*args)
|
25
|
+
end
|
26
|
+
|
27
|
+
def load(file)
|
28
|
+
puts "loading #{file}"
|
29
|
+
eval(File.read(file), file)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
path = ARGV.shift
|
34
|
+
path ||= 'Gemfile'
|
35
|
+
if File.exist? path
|
36
|
+
puts "Loading dependencies specified in #{File.expand_path(path)}"
|
37
|
+
GemCollector.load path
|
38
|
+
else
|
39
|
+
puts "Did not find a file called #{path} to load"
|
40
|
+
end
|
41
|
+
if File.exist? 'gemspec'
|
42
|
+
puts "Loading dependencies specified in #{File.expand_path('gemspec')}"
|
43
|
+
Gem::Specification.load('gemspec').dependencies.each do |dep|
|
44
|
+
GemCollector.eval_block { gem dep.name, dep.requirement }
|
45
|
+
end
|
46
|
+
else
|
47
|
+
puts "Did not find a gemspec file to load"
|
48
|
+
end
|
data/lib/gemesis/rake.rb
CHANGED
@@ -3,7 +3,13 @@ namespace :gem do
|
|
3
3
|
vcs = 'git' if File.exist?('.git')
|
4
4
|
vcs = 'hg' if File.exist?('.hg')
|
5
5
|
|
6
|
-
|
6
|
+
desc "release new #{spec.name} - push then increment patch"
|
7
|
+
task :release => [:push, :patch] do
|
8
|
+
if vcs
|
9
|
+
sh "#{vcs} add gemspec"
|
10
|
+
sh "#{vcs} commit -m \"bumped version for next release\""
|
11
|
+
end
|
12
|
+
end
|
7
13
|
|
8
14
|
desc "push new #{spec.name} release and #{vcs} tag"
|
9
15
|
task :push => :build do
|
@@ -28,4 +34,40 @@ namespace :gem do
|
|
28
34
|
|
29
35
|
desc "reinstall #{spec.name} locally"
|
30
36
|
task :reinstall => [:uninstall, :install]
|
31
|
-
|
37
|
+
|
38
|
+
def bump
|
39
|
+
FileUtils.mv 'gemspec', 'gemspec.tmp'
|
40
|
+
|
41
|
+
File.open('gemspec','w') do |io_out|
|
42
|
+
File.open('gemspec.tmp') do |io_in|
|
43
|
+
io_in.each do |line|
|
44
|
+
line.chomp!
|
45
|
+
if line =~ /version = '(\d+)\.(\d+)\.(\d+)'/
|
46
|
+
versions = [$1.to_i,$2.to_i,$3.to_i]
|
47
|
+
yield versions
|
48
|
+
io_out.puts " s.version = '#{versions.join('.')}'"
|
49
|
+
else
|
50
|
+
io_out.puts line
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
FileUtils.rm 'gemspec.tmp'
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "bump major version"
|
60
|
+
task :major do
|
61
|
+
bump {|versions| versions[0] += 1}
|
62
|
+
end
|
63
|
+
|
64
|
+
desc "bump minor version"
|
65
|
+
task :minor do
|
66
|
+
bump {|versions| versions[1] += 1}
|
67
|
+
end
|
68
|
+
|
69
|
+
desc "bump patch version"
|
70
|
+
task :patch do
|
71
|
+
bump {|versions| versions[2] += 1}
|
72
|
+
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemesis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Mark Ryall
|
@@ -14,19 +15,20 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-10-24 00:00:00 +10:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
21
22
|
description:
|
22
23
|
email: mark@ryall.name
|
23
|
-
executables:
|
24
|
-
|
24
|
+
executables:
|
25
|
+
- collect_gems
|
25
26
|
extensions: []
|
26
27
|
|
27
28
|
extra_rdoc_files: []
|
28
29
|
|
29
30
|
files:
|
31
|
+
- bin/collect_gems
|
30
32
|
- lib/gemesis/rake.rb
|
31
33
|
- README.rdoc
|
32
34
|
- MIT-LICENSE
|
@@ -40,23 +42,27 @@ rdoc_options: []
|
|
40
42
|
require_paths:
|
41
43
|
- lib
|
42
44
|
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
43
46
|
requirements:
|
44
47
|
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
49
|
+
hash: 3
|
46
50
|
segments:
|
47
51
|
- 0
|
48
52
|
version: "0"
|
49
53
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
50
55
|
requirements:
|
51
56
|
- - ">="
|
52
57
|
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
53
59
|
segments:
|
54
60
|
- 0
|
55
61
|
version: "0"
|
56
62
|
requirements: []
|
57
63
|
|
58
64
|
rubyforge_project:
|
59
|
-
rubygems_version: 1.3.
|
65
|
+
rubygems_version: 1.3.7
|
60
66
|
signing_key:
|
61
67
|
specification_version: 3
|
62
68
|
summary: some lightweight utilities to assist in managing a rubygem
|