ruby_ext 0.4.13 → 0.4.14
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/Rakefile +2 -1
- data/lib/rake_ext/project.rb +57 -29
- data/lib/rake_ext.rb +11 -12
- metadata +2 -2
data/Rakefile
CHANGED
data/lib/rake_ext/project.rb
CHANGED
@@ -58,46 +58,74 @@ require 'rake/clean'
|
|
58
58
|
require 'rake/gempackagetask'
|
59
59
|
require 'tmpdir'
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
61
|
+
class GemHelper
|
62
|
+
class << self
|
63
|
+
def next_version gem_name
|
64
|
+
%x(gem list --remote #{gem_name}).scan /#{gem_name} \((\d+\.\d+\.\d+)\)/ do |s|
|
65
|
+
v = s.first.split('.').collect{|d| d.to_i}
|
66
|
+
v[-1] = v[-1] + 1
|
67
|
+
return v.join('.')
|
68
|
+
end
|
69
|
+
return '0.0.1'
|
70
|
+
end
|
65
71
|
|
66
|
-
|
72
|
+
def prepare_gem_metadata
|
73
|
+
spec = Gem::Specification.new do |s|
|
74
|
+
gems, fake_gems = parse_project_gemfile
|
75
|
+
gems = gems + fake_gems
|
67
76
|
|
68
|
-
|
77
|
+
gems.each{|name_version| s.add_dependency *name_version}
|
69
78
|
|
70
|
-
|
71
|
-
s.name = options.delete(:official_name)
|
72
|
-
s.platform = options.delete(:platform) || Gem::Platform::RUBY
|
73
|
-
s.has_rdoc = options.delete(:has_rdoc) == nil ? false : true
|
74
|
-
s.require_path = options.delete(:lib) || "lib"
|
75
|
-
s.files = options.delete(:files) || (%w{Rakefile readme.md} + Dir.glob("{lib,spec}/**/*"))
|
76
|
-
s.bindir = options.delete(:bin) if options.include? :bin
|
79
|
+
options = project.clone
|
77
80
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
+
options.delete(:name)
|
82
|
+
options.delete(:gem) || raise("this project isn't a gem!")
|
83
|
+
name = options.delete(:official_name)
|
81
84
|
|
82
|
-
|
83
|
-
|
85
|
+
s.name = name
|
86
|
+
s.platform = options.delete(:platform) || Gem::Platform::RUBY
|
87
|
+
s.has_rdoc = options.delete(:has_rdoc) == nil ? false : true
|
88
|
+
s.require_path = options.delete(:lib) || "lib"
|
89
|
+
s.files = options.delete(:files) || (%w{Rakefile readme.md} + Dir.glob("{lib,spec}/**/*"))
|
90
|
+
s.bindir = options.delete(:bin) if options.include? :bin
|
91
|
+
|
92
|
+
s.version = options.delete(:version) || GemHelper.next_version(name)
|
93
|
+
|
94
|
+
# s.name = options[:name)
|
95
|
+
# s.author = options[:author)
|
96
|
+
# s.homepage = options[:homepage)
|
97
|
+
|
98
|
+
options.each{|k, v| s.send "#{k}=", v}
|
99
|
+
end
|
84
100
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
101
|
+
Rake::GemPackageTask.new(spec) do |p|
|
102
|
+
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
|
103
|
+
p.need_zip = true
|
104
|
+
p.package_dir = package_dir
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def package_dir
|
109
|
+
Dir.tmpdir + "/#{project[:official_name]}_tmp"
|
110
|
+
end
|
90
111
|
end
|
112
|
+
end
|
91
113
|
|
92
|
-
|
93
|
-
|
114
|
+
namespace :gem do
|
115
|
+
task :ensure_gem do
|
116
|
+
GemHelper.prepare_gem_metadata
|
117
|
+
end
|
118
|
+
|
119
|
+
task push: :ensure_gem do
|
120
|
+
gem_file = Dir.glob("#{GemHelper.package_dir}/#{project[:official_name]}*.gem").first
|
94
121
|
system "gem push #{gem_file}"
|
95
122
|
end
|
96
123
|
|
97
|
-
task :
|
98
|
-
|
124
|
+
task clean: :ensure_gem do
|
125
|
+
GemHelper.prepare_gem_metadata
|
126
|
+
system "rm -r #{GemHelper.package_dir}"
|
99
127
|
end
|
100
128
|
|
101
|
-
desc "Build and publish project as gem"
|
102
|
-
task release: [:gem, :push, :clean]
|
129
|
+
desc "Build and publish project as gem"
|
130
|
+
task release: [:ensure_gem, :gem, :push, :clean]
|
103
131
|
end
|
data/lib/rake_ext.rb
CHANGED
@@ -26,8 +26,7 @@ begin
|
|
26
26
|
t.pattern = "spec/**/[^_]*_spec.rb"
|
27
27
|
end
|
28
28
|
|
29
|
-
namespace :spec do
|
30
|
-
|
29
|
+
namespace :spec do
|
31
30
|
desc "Run RSpec code exapmples in isolated mode (every spec file in another Ruby process)"
|
32
31
|
task :isolated do
|
33
32
|
Dir.glob("spec/[^_]**/[^_]*_spec.rb").each do |spec_file|
|
@@ -44,12 +43,12 @@ end
|
|
44
43
|
#
|
45
44
|
# project_dir
|
46
45
|
#
|
47
|
-
|
46
|
+
$_project_dir = (
|
48
47
|
caller.find{|line| line =~ /\/Rakefile\:/} ||
|
49
48
|
raise("You can include the 'rake_ext' only in Rakefile!")
|
50
49
|
).sub(/\/Rakefile\:.*/, '')
|
51
50
|
def project_dir
|
52
|
-
|
51
|
+
$_project_dir
|
53
52
|
end
|
54
53
|
|
55
54
|
|
@@ -57,14 +56,14 @@ end
|
|
57
56
|
# before, after and remove task
|
58
57
|
#
|
59
58
|
def before task_name, &block
|
60
|
-
|
61
|
-
counter = (
|
59
|
+
$_task_counter ||= {}
|
60
|
+
counter = ($_task_counter[task_name] ||= 0)
|
62
61
|
before_task_name = "#{task_name}_before_#{counter}"
|
63
62
|
|
64
63
|
task before_task_name, &block
|
65
64
|
task task_name => before_task_name
|
66
65
|
|
67
|
-
|
66
|
+
$_task_counter[task_name] += 1
|
68
67
|
end
|
69
68
|
|
70
69
|
def after task_name, &block
|
@@ -82,13 +81,13 @@ alias :delete_task :remove_task
|
|
82
81
|
#
|
83
82
|
def project options = nil
|
84
83
|
if options
|
85
|
-
|
86
|
-
options.each{|k, v|
|
84
|
+
$_project = {}
|
85
|
+
options.each{|k, v| $_project[k.to_sym] = v}
|
87
86
|
|
88
|
-
|
89
|
-
|
87
|
+
$_project[:name] || raise("project name not defined")
|
88
|
+
$_project[:official_name] ||= $_project[:name]
|
90
89
|
|
91
90
|
require 'rake_ext/project'
|
92
91
|
end
|
93
|
-
|
92
|
+
$_project || raise("project not defined!")
|
94
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.14
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-07-
|
12
|
+
date: 2011-07-04 00:00:00.000000000 +04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
description:
|