rim 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog ADDED
@@ -0,0 +1,3 @@
1
+ 1.0.1 First working public release
2
+
3
+ 1.0.0 First public release (yanked, because defect)
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Jan Friedrich
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
20
+
data/README.rdoc ADDED
@@ -0,0 +1 @@
1
+ Rim - a simple project / gem manager
data/lib/rim/core.rb ADDED
@@ -0,0 +1,15 @@
1
+ # -- encoding: utf-8 --
2
+ class Rim
3
+ # Name of the project / gem
4
+ attr_accessor :name
5
+
6
+ # lib directory (default +lib+)
7
+ attr_accessor :lib_dir
8
+
9
+ # Authors of the project / gem
10
+ attr_accessor :authors
11
+
12
+ defaults do
13
+ lib_dir 'lib'
14
+ end
15
+ end
data/lib/rim/gem.rb ADDED
@@ -0,0 +1,61 @@
1
+ # -- encoding: utf-8 --
2
+ class Rim
3
+ # Gem version
4
+ attr_accessor :version
5
+
6
+ # Project / gem description
7
+ attr_accessor :description
8
+
9
+ # Project / gem summary
10
+ attr_accessor :summary
11
+
12
+ # E-Mail address
13
+ attr_accessor :email
14
+
15
+ # Project homepage
16
+ attr_accessor :homepage
17
+
18
+ # Files included in the gem (default: <code>/^README/i, /^Changelog/i, /^COPYING/i, /^LICENSE/i, 'lib/**/*', 'test/**/*'</code>)
19
+ attr_accessor :gem_files
20
+ end
21
+
22
+ Rim.defaults do
23
+ gem_files filelist(/^README/i, /^Changelog/i, /^COPYING/i, /^LICENSE/i, 'lib/**/*', 'test/**/*')
24
+ end
25
+
26
+ Rim.after_setup do
27
+ klass = nil
28
+ begin
29
+ require 'rubygems/package_task'
30
+ klass = Gem::PackageTask
31
+ rescue LoadError
32
+ require 'rake/gempackagetask'
33
+ klass = Rake::GemPackageTask
34
+ end
35
+
36
+ if klass
37
+ spec = Gem::Specification.new do |s|
38
+ s.authors = authors
39
+ s.email = email
40
+ s.platform = Gem::Platform::RUBY
41
+ s.description = description
42
+ s.homepage = homepage
43
+ s.name = name
44
+ s.summary = summary
45
+ s.version = version
46
+ s.require_path = lib_dir
47
+ s.files = gem_files
48
+ end
49
+
50
+ task_object = klass.new(spec) do |pkg|
51
+ end
52
+
53
+ desc 'Push the gem to rubygems.org'
54
+ task :release => [:test, :gem] do
55
+ gem_filename = format('%s/%s.gem', task_object.package_dir, task_object.name)
56
+ puts "Push #{gem_filename} to rubygems.org"
57
+ system "gem push #{gem_filename}"
58
+ end
59
+ end
60
+
61
+ end
data/lib/rim/git.rb ADDED
@@ -0,0 +1,14 @@
1
+ # -- encoding: utf-8 --
2
+ require 'rim'
3
+
4
+ Rim.after_setup do
5
+ if Dir.exist?('.git')
6
+ namespace :git do
7
+ desc 'tag version'
8
+ tag_task = task :tag do
9
+ puts "git tag v#{version}"
10
+ end
11
+ end
12
+ task :post_release => 'git:tag'
13
+ end
14
+ end
data/lib/rim/info.rb ADDED
@@ -0,0 +1,8 @@
1
+ # -- encoding: utf-8 --
2
+ Rim.after_setup do
3
+ desc 'Prints informations about the Rim object.'
4
+ task :info do
5
+ require 'yaml'
6
+ puts Rim.instance.to_yaml
7
+ end
8
+ end
data/lib/rim/irb.rb ADDED
@@ -0,0 +1,7 @@
1
+ # -- encoding: utf-8 --
2
+ Rim.after_setup do
3
+ desc 'Start an irb session an loading lib'
4
+ task :irb do
5
+ exec "irb -I #{lib_dir} -r #{name}"
6
+ end
7
+ end
data/lib/rim/rdoc.rb ADDED
@@ -0,0 +1,36 @@
1
+ # -- encoding: utf-8 --
2
+ class Rim
3
+ # Directory for rdoc output
4
+ attr_accessor :rdoc_dir
5
+
6
+ # RDoc files (default: <code>/README(.rdoc)?/i</code>, <code>lib/\*\*/\*</code>)
7
+ attr_accessor :rdoc_files
8
+
9
+ # Main file for RDoc (default: <code>/README(.rdoc)?/i</code>)
10
+ attr_accessor :rdoc_main
11
+ end
12
+
13
+ Rim.defaults do
14
+ rdoc_dir 'doc'
15
+ rdoc_files filelist(/^README(\.rdoc)?$/i, 'lib/**/*')
16
+ rdoc_main filelist(/^README(\.rdoc)?$/i).first
17
+ end
18
+
19
+ Rim.after_setup do
20
+ klass = nil
21
+ begin
22
+ require 'rdoc/task'
23
+ klass = RDoc::Task
24
+ rescue LoadError
25
+ require 'rake/rdoctask'
26
+ klass = Rake::RDocTask
27
+ end
28
+
29
+ if klass
30
+ klass.new do |rd|
31
+ rd.rdoc_dir = rdoc_dir
32
+ rd.rdoc_files = rdoc_files
33
+ rd.main = rdoc_main
34
+ end
35
+ end
36
+ end
data/lib/rim/test.rb ADDED
@@ -0,0 +1,19 @@
1
+ # -- encoding: utf-8 --
2
+ class Rim
3
+ # Test files (default: <code>'test/\*\*/\*.rb')</code>
4
+ attr_accessor :test_files
5
+ end
6
+
7
+ Rim.defaults do
8
+ test_files filelist('test/**/*.rb')
9
+ end
10
+
11
+ Rim.after_setup do
12
+ unless Array(test_files).empty?
13
+ require 'rake/testtask'
14
+ Rake::TestTask.new do |t|
15
+ t.test_files = test_files
16
+ end
17
+ task :default => :test
18
+ end
19
+ end
data/lib/rim.rb ADDED
@@ -0,0 +1,67 @@
1
+ # -- encoding: utf-8 --
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'singleton'
5
+
6
+ # Rim a super simple ruby project / gem manager
7
+ class Rim
8
+
9
+ begin
10
+ require 'rake/dsl_definition'
11
+ include Rake::DSL
12
+ rescue LoadError
13
+ end
14
+ include Singleton
15
+
16
+ # Setting the default values of attributes. Useful when writing Rim extensions.
17
+ def self.defaults(&blk)
18
+ Rim.instance.instance_eval &blk
19
+ end
20
+
21
+ # Setting up Rim. This method is usual used in Rakefiles to setting the project specific
22
+ # values of the Rim instance.
23
+ def self.setup(&blk)
24
+ Rim.instance.instance_eval &blk
25
+ execute_definitions
26
+ end
27
+
28
+ # The block is executed after setup is completed.
29
+ # Useful when writing rim extensions.
30
+ # At execution time the Rim instance is coplete initialized.
31
+ def self.after_setup(&blk)
32
+ @definitions << blk
33
+ end
34
+
35
+ # Helper method to generate Rake::FileList objects.
36
+ # Main difference between Rake::FileList.new and this method is
37
+ # the possibility to use Regexp objects as parameters.
38
+ def filelist(*args)
39
+ res = FileList.new
40
+ args.each do |arg|
41
+ if arg.kind_of?(Regexp)
42
+ res += FileList.new('**/*').grep(arg)
43
+ else
44
+ res += FileList.new(arg)
45
+ end
46
+ end
47
+ res
48
+ end
49
+
50
+ private
51
+
52
+ def self.attr_accessor attr
53
+ attr_writer attr
54
+ self.class_eval "def #{attr}(arg=nil); arg.nil? ? @#{attr} : @#{attr} = arg; end"
55
+ end
56
+
57
+ @definitions = []
58
+
59
+ def self.execute_definitions
60
+ @definitions.each do |blk|
61
+ Rim.instance.instance_eval &blk
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+ require 'rim/core'
@@ -0,0 +1,26 @@
1
+ # -- encoding: utf-8 --
2
+ require 'rim'
3
+ require 'test/unit'
4
+
5
+ class TestHelperMethods < Test::Unit::TestCase
6
+
7
+ class ::Rim
8
+ attr_accessor :some_new_attr
9
+ end
10
+
11
+ def test_attr_accessor
12
+ rim = Rim.instance
13
+ assert_nil rim.some_new_attr, 'New attribute must be nil.'
14
+ rim.some_new_attr = :standard_setter
15
+ assert_equal :standard_setter, rim.some_new_attr
16
+ rim.some_new_attr :advanced_setter
17
+ assert_equal :advanced_setter, rim.some_new_attr
18
+ end
19
+
20
+ def test_filelist
21
+ rim = Rim.instance
22
+ fl = rim.filelist(/rakefile/i, 'lib')
23
+ assert_equal %w(Rakefile lib), fl.to_a
24
+ end
25
+
26
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rim
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jan Friedrich
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-12 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: ! " Goal is to have a project managing that just works on many Ruby\n
15
+ \ versions as possible and is easy to extend. Feel free to dislike it. ;)\n"
16
+ email: janfri26@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - README.rdoc
22
+ - Changelog
23
+ - LICENSE
24
+ - lib/rim/core.rb
25
+ - lib/rim/gem.rb
26
+ - lib/rim/git.rb
27
+ - lib/rim/info.rb
28
+ - lib/rim/irb.rb
29
+ - lib/rim/rdoc.rb
30
+ - lib/rim/test.rb
31
+ - lib/rim.rb
32
+ - test/test_helper_methods.rb
33
+ homepage: http://gitorious.org/rim
34
+ licenses: []
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ requirements: []
52
+ rubyforge_project:
53
+ rubygems_version: 1.8.6.1
54
+ signing_key:
55
+ specification_version: 3
56
+ summary: A simple project / gem manager
57
+ test_files: []