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.
Files changed (4) hide show
  1. data/Rakefile +2 -1
  2. data/lib/rake_ext/project.rb +57 -29
  3. data/lib/rake_ext.rb +11 -12
  4. metadata +2 -2
data/Rakefile CHANGED
@@ -5,7 +5,8 @@ require 'rake_ext'
5
5
 
6
6
  project(
7
7
  name: "ruby_ext",
8
- version: "0.4.13",
8
+ gem: true,
9
+ # version: "0.4.13",
9
10
  summary: "Ruby Extensions",
10
11
 
11
12
  author: "Alexey Petrushin",
@@ -58,46 +58,74 @@ require 'rake/clean'
58
58
  require 'rake/gempackagetask'
59
59
  require 'tmpdir'
60
60
 
61
- namespace :gem do
62
- spec = Gem::Specification.new do |s|
63
- gems, fake_gems = parse_project_gemfile
64
- gems = gems + fake_gems
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
- gems.each{|name_version| s.add_dependency *name_version}
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
- options = project.clone
77
+ gems.each{|name_version| s.add_dependency *name_version}
69
78
 
70
- options.delete(:name)
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
- # s.name = options[:name)
79
- # s.author = options[:author)
80
- # s.homepage = options[:homepage)
81
+ options.delete(:name)
82
+ options.delete(:gem) || raise("this project isn't a gem!")
83
+ name = options.delete(:official_name)
81
84
 
82
- options.each{|k, v| s.send "#{k}=", v}
83
- end
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
- package_dir = Dir.tmpdir + "/#{project[:official_name]}_tmp"
86
- Rake::GemPackageTask.new(spec) do |p|
87
- p.need_tar = true if RUBY_PLATFORM !~ /mswin/
88
- p.need_zip = true
89
- p.package_dir = package_dir
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
- task :push do
93
- gem_file = Dir.glob("#{package_dir}/#{project[:official_name]}*.gem").first
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 :clean do
98
- system "rm -r #{package_dir}"
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
- PROJECT_DIR = (
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
- PROJECT_DIR
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
- @task_counter ||= {}
61
- counter = (@task_counter[task_name] ||= 0)
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
- @task_counter[task_name] += 1
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
- @options = {}
86
- options.each{|k, v| @options[k.to_sym] = v}
84
+ $_project = {}
85
+ options.each{|k, v| $_project[k.to_sym] = v}
87
86
 
88
- @options[:name] || raise("project name not defined")
89
- @options[:official_name] ||= @options[:name]
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
- @options || raise("project not defined!")
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.13
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-02 00:00:00.000000000 +04:00
12
+ date: 2011-07-04 00:00:00.000000000 +04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
  description: