rim 1.1.0 → 1.2.0
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/Changelog +13 -4
- data/README.rdoc +59 -1
- data/Rakefile +23 -0
- data/lib/rim/core.rb +9 -6
- data/lib/rim/gem.rb +18 -8
- data/lib/rim/git.rb +8 -1
- data/lib/rim/install.rb +8 -0
- data/lib/rim/irb.rb +2 -1
- data/lib/rim.rb +21 -4
- metadata +9 -4
data/Changelog
CHANGED
@@ -1,7 +1,16 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
2
|
+
New tasks: install, uninstall, gem:install, gem:uninstall
|
3
|
+
API extension: Rim.defaults and Rim.setup accept now a parameter in block and
|
4
|
+
yield Rim.instance in this case.
|
2
5
|
|
3
|
-
1.0
|
6
|
+
1.1.0
|
7
|
+
New tasks: git:tag and check_version
|
4
8
|
|
5
|
-
1.0.
|
9
|
+
1.0.2
|
10
|
+
Fix typo in email
|
6
11
|
|
7
|
-
1.0.
|
12
|
+
1.0.1
|
13
|
+
First working public release
|
14
|
+
|
15
|
+
1.0.0
|
16
|
+
First public release (yanked, because defect)
|
data/README.rdoc
CHANGED
@@ -1 +1,59 @@
|
|
1
|
-
Rim
|
1
|
+
== Rim a super simple ruby project / gem manager
|
2
|
+
|
3
|
+
Goal is to have a project managing that just works on many Ruby
|
4
|
+
versions as possible and is easy to extend. Feel free to dislike it. ;)
|
5
|
+
|
6
|
+
=== Use for project management
|
7
|
+
|
8
|
+
Minimal Rakefile:
|
9
|
+
require 'rim'
|
10
|
+
require 'rim/gem'
|
11
|
+
# require 'rim/...'
|
12
|
+
|
13
|
+
Rim.setup do
|
14
|
+
name 'My project'
|
15
|
+
authors 'me'
|
16
|
+
version '1.0.0'
|
17
|
+
end
|
18
|
+
|
19
|
+
For advanced usuage have a look at the Rakefile of rim.
|
20
|
+
|
21
|
+
|
22
|
+
=== Writing an extension
|
23
|
+
|
24
|
+
* Extend the class Rim with +attr_accessors+ for new attributes if needed.
|
25
|
+
* Set default values use +Rim.defaults+.
|
26
|
+
* Define tasks with +Rim.after_setup+.
|
27
|
+
|
28
|
+
A very simple example extension:
|
29
|
+
# require other extensions if neccessary
|
30
|
+
|
31
|
+
require 'rim/another_extension'
|
32
|
+
|
33
|
+
# Extend the class
|
34
|
+
|
35
|
+
class Rim
|
36
|
+
# Attribute for somewhat (default: 42)
|
37
|
+
attr_accessor :my_attr
|
38
|
+
end
|
39
|
+
|
40
|
+
# Setting default values
|
41
|
+
|
42
|
+
Rim.defaults do
|
43
|
+
my_attr 42
|
44
|
+
end
|
45
|
+
|
46
|
+
# Stuff to execute after setting the defaults and calling Rim.setup in Rakefile.
|
47
|
+
# Usual for defining tasks.
|
48
|
+
|
49
|
+
Rim.after_setup do
|
50
|
+
task :my_task => :another_task do
|
51
|
+
# stuff
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
For more examples have a look at the tasks comming with rim in lib/rim/*.rb
|
56
|
+
|
57
|
+
|
58
|
+
=== License
|
59
|
+
MIT license, see file LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__) + '/lib'
|
2
|
+
require 'rim'
|
3
|
+
require 'rim/core'
|
4
|
+
require 'rim/check_version'
|
5
|
+
require 'rim/gem'
|
6
|
+
require 'rim/git'
|
7
|
+
require 'rim/info'
|
8
|
+
require 'rim/irb'
|
9
|
+
require 'rim/rdoc'
|
10
|
+
require 'rim/test'
|
11
|
+
|
12
|
+
Rim.setup do
|
13
|
+
name 'rim'
|
14
|
+
authors 'Jan Friedrich'
|
15
|
+
email 'janfri26@gmail.com'
|
16
|
+
homepage 'http://gitorious.org/rim'
|
17
|
+
version Rim::VERSION
|
18
|
+
summary 'A simple project / gem manager'
|
19
|
+
description <<-END
|
20
|
+
Goal is to have a project managing that just works on many Ruby
|
21
|
+
versions as possible and is easy to extend. Feel free to dislike it. ;)
|
22
|
+
END
|
23
|
+
end
|
data/lib/rim/core.rb
CHANGED
@@ -3,13 +3,16 @@ class Rim
|
|
3
3
|
# Name of the project / gem
|
4
4
|
attr_accessor :name
|
5
5
|
|
6
|
-
# lib directory (default +lib+)
|
7
|
-
attr_accessor :lib_dir
|
8
|
-
|
9
6
|
# Authors of the project / gem
|
10
7
|
attr_accessor :authors
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
# Project / gem version
|
10
|
+
attr_accessor :version
|
11
|
+
|
12
|
+
# Paths for require to load the lib (default: <code>['lib']</code>
|
13
|
+
attr_accessor :require_paths
|
14
|
+
end
|
15
|
+
|
16
|
+
Rim.defaults do |r|
|
17
|
+
r.require_paths = ['lib']
|
15
18
|
end
|
data/lib/rim/gem.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# -- encoding: utf-8 --
|
2
|
+
require 'rim/install'
|
2
3
|
require 'rim/release'
|
3
4
|
class Rim
|
4
|
-
# Gem version
|
5
|
-
attr_accessor :version
|
6
|
-
|
7
5
|
# Project / gem description
|
8
6
|
attr_accessor :description
|
9
7
|
|
@@ -16,12 +14,12 @@ class Rim
|
|
16
14
|
# Project homepage
|
17
15
|
attr_accessor :homepage
|
18
16
|
|
19
|
-
# Files included in the gem (default: <code>/^README/i, /^Changelog/i, /^COPYING/i, /^LICENSE/i, 'lib/**/*', 'test/**/*'</code>)
|
17
|
+
# Files included in the gem (default: <code>/^README/i, /^Changelog/i, /^COPYING/i, /^LICENSE/i, /^Rakefile/i, 'bin/*', 'lib/**/*', 'test/**/*'</code>)
|
20
18
|
attr_accessor :gem_files
|
21
19
|
end
|
22
20
|
|
23
21
|
Rim.defaults do
|
24
|
-
gem_files filelist(/^README/i, /^Changelog/i, /^COPYING/i, /^LICENSE/i, 'lib/**/*', 'test/**/*')
|
22
|
+
gem_files filelist(/^README/i, /^Changelog/i, /^COPYING/i, /^LICENSE/i, /^Rakefile/i, 'bin/*', 'lib/**/*', 'test/**/*')
|
25
23
|
end
|
26
24
|
|
27
25
|
Rim.after_setup do
|
@@ -35,6 +33,9 @@ Rim.after_setup do
|
|
35
33
|
end
|
36
34
|
|
37
35
|
if klass
|
36
|
+
task :gem do
|
37
|
+
puts "Building #{name}-#{version}.gem"
|
38
|
+
end
|
38
39
|
spec = Gem::Specification.new do |s|
|
39
40
|
s.authors = authors
|
40
41
|
s.email = email
|
@@ -44,7 +45,7 @@ Rim.after_setup do
|
|
44
45
|
s.name = name
|
45
46
|
s.summary = summary
|
46
47
|
s.version = version
|
47
|
-
s.
|
48
|
+
s.require_paths = require_paths
|
48
49
|
s.files = gem_files
|
49
50
|
end
|
50
51
|
|
@@ -52,14 +53,23 @@ Rim.after_setup do
|
|
52
53
|
end
|
53
54
|
|
54
55
|
namespace :gem do
|
56
|
+
gem_filename = format('%s/%s.gem', task_object.package_dir, task_object.name)
|
55
57
|
desc 'Push the gem to rubygems.org'
|
56
58
|
task :push => [:clean, :test, :gem] do
|
57
|
-
gem_filename = format('%s/%s.gem', task_object.package_dir, task_object.name)
|
58
|
-
puts "Push #{gem_filename} to rubygems.org"
|
59
59
|
sh "gem push #{gem_filename}"
|
60
60
|
end
|
61
|
+
desc "Install #{gem_filename}"
|
62
|
+
task :install => :gem do
|
63
|
+
sh "gem install #{gem_filename}"
|
64
|
+
end
|
65
|
+
desc "Uninstall gem #{name} version #{version}"
|
66
|
+
task :uninstall do
|
67
|
+
sh "gem uninstall --version #{version} #{name}"
|
68
|
+
end
|
61
69
|
end
|
62
70
|
task :release => :gem
|
71
|
+
task :install => 'gem:install'
|
72
|
+
task :uninstall => 'gem:uninstall'
|
63
73
|
end
|
64
74
|
|
65
75
|
end
|
data/lib/rim/git.rb
CHANGED
@@ -11,8 +11,15 @@ Rim.after_setup do
|
|
11
11
|
puts cmd
|
12
12
|
sh cmd
|
13
13
|
end
|
14
|
+
desc 'Check if git tree is clean'
|
15
|
+
task :check do
|
16
|
+
res = `git status`
|
17
|
+
if res !~ /nothing to commit/
|
18
|
+
raise 'Git tree is not clean'
|
19
|
+
end
|
20
|
+
end
|
14
21
|
end
|
15
|
-
task :release do
|
22
|
+
task :release => 'git:check' do
|
16
23
|
invoke 'git:tag'
|
17
24
|
end
|
18
25
|
end
|
data/lib/rim/install.rb
ADDED
data/lib/rim/irb.rb
CHANGED
data/lib/rim.rb
CHANGED
@@ -3,10 +3,13 @@ require 'rake'
|
|
3
3
|
require 'rake/clean'
|
4
4
|
require 'singleton'
|
5
5
|
|
6
|
-
# Rim a super simple ruby project / gem manager
|
6
|
+
# == Rim a super simple ruby project / gem manager
|
7
|
+
#
|
8
|
+
# Goal is to have a project managing that just works on many Ruby
|
9
|
+
# versions as possible and is easy to extend. Feel free to dislike it. ;)
|
7
10
|
class Rim
|
8
11
|
|
9
|
-
VERSION = '1.
|
12
|
+
VERSION = '1.2.0'
|
10
13
|
|
11
14
|
begin
|
12
15
|
require 'rake/dsl_definition'
|
@@ -16,14 +19,28 @@ class Rim
|
|
16
19
|
include Singleton
|
17
20
|
|
18
21
|
# Setting the default values of attributes. Useful when writing Rim extensions.
|
22
|
+
# The block is evaluated in Rim.instance when no parameter is used.
|
23
|
+
# Otherwise the method yields Rim.instance.
|
19
24
|
def self.defaults(&blk)
|
20
|
-
Rim.instance
|
25
|
+
rim = Rim.instance
|
26
|
+
if blk.arity == 0
|
27
|
+
rim.instance_eval &blk
|
28
|
+
else
|
29
|
+
yield rim
|
30
|
+
end
|
21
31
|
end
|
22
32
|
|
23
33
|
# Setting up Rim. This method is usual used in Rakefiles to setting the project specific
|
24
34
|
# values of the Rim instance.
|
35
|
+
# The block is evaluated in Rim.instance when no parameter is used.
|
36
|
+
# Otherwise the method yields Rim.instance.
|
25
37
|
def self.setup(&blk)
|
26
|
-
Rim.instance
|
38
|
+
rim = Rim.instance
|
39
|
+
if blk.arity == 0
|
40
|
+
rim.instance_eval &blk
|
41
|
+
else
|
42
|
+
yield rim
|
43
|
+
end
|
27
44
|
execute_definitions
|
28
45
|
end
|
29
46
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,10 +9,13 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description: !
|
15
|
-
|
14
|
+
description: ! 'Goal is to have a project managing that just works on many Ruby
|
15
|
+
|
16
|
+
versions as possible and is easy to extend. Feel free to dislike it. ;)
|
17
|
+
|
18
|
+
'
|
16
19
|
email: janfri26@gmail.com
|
17
20
|
executables: []
|
18
21
|
extensions: []
|
@@ -21,11 +24,13 @@ files:
|
|
21
24
|
- README.rdoc
|
22
25
|
- Changelog
|
23
26
|
- LICENSE
|
27
|
+
- Rakefile
|
24
28
|
- lib/rim/check_version.rb
|
25
29
|
- lib/rim/core.rb
|
26
30
|
- lib/rim/gem.rb
|
27
31
|
- lib/rim/git.rb
|
28
32
|
- lib/rim/info.rb
|
33
|
+
- lib/rim/install.rb
|
29
34
|
- lib/rim/irb.rb
|
30
35
|
- lib/rim/rdoc.rb
|
31
36
|
- lib/rim/release.rb
|