mactag 0.5.4 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +35 -30
- data/Rakefile +10 -8
- data/VERSION +1 -1
- data/lib/generators/mactag/templates/mactag.rb +26 -85
- data/lib/mactag.rb +7 -1
- data/lib/mactag/builder.rb +4 -6
- data/lib/mactag/bundler.rb +21 -19
- data/lib/mactag/config.rb +22 -16
- data/lib/mactag/ctags.rb +2 -0
- data/lib/mactag/dsl.rb +197 -32
- data/lib/mactag/indexer.rb +9 -0
- data/lib/mactag/indexer/app.rb +22 -0
- data/lib/mactag/indexer/gem.rb +72 -0
- data/lib/mactag/{tag → indexer}/plugin.rb +10 -9
- data/lib/mactag/indexer/rails.rb +46 -0
- data/spec/mactag/builder_spec.rb +11 -11
- data/spec/mactag/config_spec.rb +24 -29
- data/spec/mactag/ctags_spec.rb +4 -4
- data/spec/mactag/dsl_spec.rb +179 -47
- data/spec/mactag/indexer/app_spec.rb +20 -0
- data/spec/mactag/indexer/gem_spec.rb +180 -0
- data/spec/mactag/{tag → indexer}/plugin_spec.rb +32 -23
- data/spec/mactag/indexer/rails_spec.rb +112 -0
- data/spec/spec_helper.rb +18 -0
- metadata +53 -28
- data/.gemtest +0 -0
- data/lib/mactag/tag.rb +0 -9
- data/lib/mactag/tag/app.rb +0 -30
- data/lib/mactag/tag/gem.rb +0 -80
- data/lib/mactag/tag/rails.rb +0 -86
- data/spec/mactag/tag/app_spec.rb +0 -9
- data/spec/mactag/tag/gem_spec.rb +0 -117
- data/spec/mactag/tag/rails_spec.rb +0 -105
- data/spec/mactag/tag_spec.rb +0 -5
data/.gemtest
DELETED
File without changes
|
data/lib/mactag/tag.rb
DELETED
data/lib/mactag/tag/app.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
module Mactag
|
2
|
-
module Tag
|
3
|
-
##
|
4
|
-
#
|
5
|
-
# Tag files in Rails project.
|
6
|
-
#
|
7
|
-
# ==== Examples
|
8
|
-
# Mactag do
|
9
|
-
# # Tag single file
|
10
|
-
# app 'lib/super_duper.rb'
|
11
|
-
#
|
12
|
-
# # Tag all ruby files in lib, recursive
|
13
|
-
# app 'lib/**/*.rb'
|
14
|
-
#
|
15
|
-
# # Tag all helper and model ruby files
|
16
|
-
# app 'app/helpers/*.rb', 'app/models/*.rb'
|
17
|
-
#
|
18
|
-
# # Same as above
|
19
|
-
# app 'app/{models,helpers}/*.rb'
|
20
|
-
# do
|
21
|
-
#
|
22
|
-
class App
|
23
|
-
attr_reader :tag
|
24
|
-
|
25
|
-
def initialize(tag)
|
26
|
-
@tag = tag
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/mactag/tag/gem.rb
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
module Mactag
|
2
|
-
module Tag
|
3
|
-
##
|
4
|
-
#
|
5
|
-
# Tags ruby gems.
|
6
|
-
#
|
7
|
-
# ==== Examples
|
8
|
-
# Mactag do
|
9
|
-
# # Tags all gems specified in Gemfile.
|
10
|
-
# gems
|
11
|
-
#
|
12
|
-
# # Tag the whenever gem, latest version
|
13
|
-
# gem 'whenever'
|
14
|
-
#
|
15
|
-
# # Tag the thinking-sphinx and formtastic gems, latest versions
|
16
|
-
# gems 'thinking-sphinx', 'formtastic'
|
17
|
-
#
|
18
|
-
# # Tag the formtastic gem, version 0.8.2
|
19
|
-
# gem 'formtastic', :version => '0.8.2'
|
20
|
-
# do
|
21
|
-
#
|
22
|
-
class Gem
|
23
|
-
attr_accessor :name, :version
|
24
|
-
|
25
|
-
def initialize(name, version = nil)
|
26
|
-
@name = name
|
27
|
-
@version = version
|
28
|
-
end
|
29
|
-
|
30
|
-
def tag
|
31
|
-
if exists?
|
32
|
-
unless version
|
33
|
-
@version = Mactag::Tag::Gem.last(name)
|
34
|
-
end
|
35
|
-
|
36
|
-
File.join(Mactag::Config.gem_home, combo, 'lib', '**', '*.rb')
|
37
|
-
else
|
38
|
-
raise GemNotFoundError.new(self)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def exists?
|
43
|
-
Mactag::Tag::Gem.dirs(name).size > 0
|
44
|
-
end
|
45
|
-
|
46
|
-
class << self
|
47
|
-
def all
|
48
|
-
# Mactag::Bundler.gems
|
49
|
-
bundler = Mactag::Bundler.new
|
50
|
-
bundler.gems
|
51
|
-
end
|
52
|
-
|
53
|
-
def last(name)
|
54
|
-
dirs = Mactag::Tag::Gem.dirs(name)
|
55
|
-
unless dirs.empty?
|
56
|
-
if dirs.size == 1
|
57
|
-
gem = dirs.first
|
58
|
-
else
|
59
|
-
gem = dirs.sort.last
|
60
|
-
end
|
61
|
-
if /-([^\/]+)$/.match(gem)
|
62
|
-
$1
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def dirs(name)
|
68
|
-
Dir.glob(File.join(Mactag::Config.gem_home, "#{name}-*"))
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
|
73
|
-
private
|
74
|
-
|
75
|
-
def combo
|
76
|
-
"#{name}-#{version}"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
data/lib/mactag/tag/rails.rb
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
module Mactag
|
2
|
-
module Tag
|
3
|
-
##
|
4
|
-
#
|
5
|
-
# Tags Rails gem.
|
6
|
-
#
|
7
|
-
# ==== Packages
|
8
|
-
# Naming does not matter, so *activerecord* and *active_record* are the same.
|
9
|
-
#
|
10
|
-
# * actionmailer
|
11
|
-
# * actionpack
|
12
|
-
# * activemodel
|
13
|
-
# * activerecord
|
14
|
-
# * activeresource
|
15
|
-
# * railties
|
16
|
-
# * activesupport
|
17
|
-
#
|
18
|
-
#
|
19
|
-
# ==== Examples
|
20
|
-
# Mactag do
|
21
|
-
# # Tag all rails packages, same rails version as application
|
22
|
-
# rails
|
23
|
-
#
|
24
|
-
# # Tag all rails packages, version 2.3.5
|
25
|
-
# rails :version => '2.3.5'
|
26
|
-
#
|
27
|
-
# # Tag only activerecord, same rails version as application
|
28
|
-
# rails :only => :active_record
|
29
|
-
#
|
30
|
-
# # Tag all packages except activerecord, same rails version as application
|
31
|
-
# rails :except => :activerecord
|
32
|
-
#
|
33
|
-
# # Tag only activerecord and actionview, same rails version as application
|
34
|
-
# rails :only => [:activerecord, :action_view]
|
35
|
-
#
|
36
|
-
# # Tag all packages except activerecord and actionview, same rails version as application
|
37
|
-
# rails :except => ['activerecord', :action_controller]
|
38
|
-
#
|
39
|
-
# # Tag all packages except actionmailer, version 2.3.4
|
40
|
-
# rails :except => :actionmailer, :version => '2.3.4'
|
41
|
-
# do
|
42
|
-
#
|
43
|
-
class Rails
|
44
|
-
|
45
|
-
PACKAGES = %w(actionmailer actionpack activemodel activerecord activeresource activesupport railties)
|
46
|
-
|
47
|
-
attr_accessor :only, :except, :version
|
48
|
-
|
49
|
-
def initialize(options)
|
50
|
-
@only = packagize(options[:only])
|
51
|
-
@except = packagize(options[:except])
|
52
|
-
@version = options[:version]
|
53
|
-
end
|
54
|
-
|
55
|
-
def tag
|
56
|
-
packages.inject([]) do |array, package|
|
57
|
-
array << Gem.new(package, version).tag
|
58
|
-
array
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def packages
|
63
|
-
if only || except
|
64
|
-
only || PACKAGES - except
|
65
|
-
else
|
66
|
-
PACKAGES
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
private
|
72
|
-
|
73
|
-
def packagize(pkgs)
|
74
|
-
return nil if pkgs.blank?
|
75
|
-
|
76
|
-
Array(pkgs).map do |pkg|
|
77
|
-
"#{pkg}".gsub(/[^a-z]/, '')
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def version
|
82
|
-
@version || ::Rails.version
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
data/spec/mactag/tag/app_spec.rb
DELETED
data/spec/mactag/tag/gem_spec.rb
DELETED
@@ -1,117 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Mactag::Tag::Gem do
|
4
|
-
subject do
|
5
|
-
Mactag::Tag::Gem.new('devise')
|
6
|
-
end
|
7
|
-
|
8
|
-
it_should_behave_like 'tagger'
|
9
|
-
|
10
|
-
before do
|
11
|
-
Mactag::Config.stub(:gem_home) { 'GEM_HOME' }
|
12
|
-
|
13
|
-
@gem = Mactag::Tag::Gem.new('devise')
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#tag' do
|
17
|
-
context 'when gem exists' do
|
18
|
-
before do
|
19
|
-
@gem.stub(:exists?) { true }
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'without version' do
|
23
|
-
before do
|
24
|
-
Mactag::Tag::Gem.stub(:last) { '1.1.1' }
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'returns path to gem' do
|
28
|
-
@gem.tag.should eq('GEM_HOME/devise-1.1.1/lib/**/*.rb')
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'with version' do
|
33
|
-
before do
|
34
|
-
@gem.stub(:version) { '1.1.1' }
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'returns path to gem' do
|
38
|
-
@gem.tag.should eq('GEM_HOME/devise-1.1.1/lib/**/*.rb')
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context 'when gem does not exist' do
|
44
|
-
before do
|
45
|
-
@gem.stub(:exists?) { false }
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'raises exception' do
|
49
|
-
proc {
|
50
|
-
@gem.tag
|
51
|
-
}.should raise_exception(Mactag::GemNotFoundError)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe '#exists?' do
|
57
|
-
context 'without version' do
|
58
|
-
it 'is true when single version of gem exists' do
|
59
|
-
Dir.stub(:glob) { ['devise-1.1.1'] }
|
60
|
-
@gem.exists?.should be_true
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'is true when multiple versions of gem exists' do
|
64
|
-
Dir.stub(:glob) { %w(devise-1.1.0 devise-1.1.1) }
|
65
|
-
@gem.exists?.should be_true
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'is false when gem does not exist' do
|
69
|
-
Dir.stub(:glob) { [] }
|
70
|
-
@gem.exists?.should be_false
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
describe '#last' do
|
76
|
-
context 'when no gems exists' do
|
77
|
-
before do
|
78
|
-
Mactag::Tag::Gem.stub(:dirs) { [] }
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'returns nil' do
|
82
|
-
Mactag::Tag::Gem.last('devise').should be_nil
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
context 'when single version of gem exist' do
|
87
|
-
before do
|
88
|
-
Mactag::Tag::Gem.stub(:dirs) { ['devise-1.1.1'] }
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'returns nil' do
|
92
|
-
Mactag::Tag::Gem.last('devise').should eq('1.1.1')
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
context 'when multiple versions of gem exist' do
|
97
|
-
before do
|
98
|
-
Mactag::Tag::Gem.stub(:dirs) { ['devise-1.1.0', 'devise-1.1.1'] }
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'returns nil' do
|
102
|
-
Mactag::Tag::Gem.last('devise').should eq('1.1.1')
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
context 'when the path contains other version numbers' do
|
107
|
-
before do
|
108
|
-
Mactag::Tag::Gem.stub(:dirs) { ['/Users/user/.rvm/gems/ree-1.8.7-2011.03@project/gems/simple_form-1.3.1'] }
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'extract correct version' do
|
112
|
-
Mactag::Tag::Gem.last('simple_form').should eq('1.3.1')
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|
117
|
-
end
|
@@ -1,105 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Mactag::Tag::Rails do
|
4
|
-
subject do
|
5
|
-
Mactag::Tag::Rails.new({})
|
6
|
-
end
|
7
|
-
|
8
|
-
it_should_behave_like 'tagger'
|
9
|
-
|
10
|
-
before do
|
11
|
-
@rails = Mactag::Tag::Rails.new({})
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'has correct default packages' do
|
15
|
-
Mactag::Tag::Rails::PACKAGES.should eq(['actionmailer', 'actionpack', 'activemodel', 'activerecord', 'activeresource', 'activesupport', 'railties'])
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '#tag' do
|
19
|
-
before do
|
20
|
-
Mactag::Tag::Gem.stub(:new) { mock(:tag => 'tag') }
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'returns empty array if no packages' do
|
24
|
-
@rails.stub(:packages) { [] }
|
25
|
-
|
26
|
-
@rails.tag.should eq([])
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'returns array with gem tags when packages' do
|
30
|
-
@rails.stub(:packages) { ['activemodel', 'activerecord'] }
|
31
|
-
|
32
|
-
@rails.tag.should eq(['tag', 'tag'])
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#packages' do
|
37
|
-
it 'returns all packages unless only and except' do
|
38
|
-
@rails.packages.should eq(Mactag::Tag::Rails::PACKAGES)
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'returns some packages when only specified' do
|
42
|
-
@rails = Mactag::Tag::Rails.new(:only => [:active_support, :activerecord])
|
43
|
-
|
44
|
-
@rails.packages.should eq(['activesupport', 'activerecord'])
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'returns some packages when except specified' do
|
48
|
-
@rails = Mactag::Tag::Rails.new(:except => [:active_support, :activerecord])
|
49
|
-
|
50
|
-
@rails.packages.should eq(['actionmailer', 'actionpack', 'activemodel', 'activeresource', 'railties'])
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '#packagize' do
|
55
|
-
it 'returns empty array when no packages' do
|
56
|
-
@rails.send(:packagize, []).should be_nil
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'single package' do
|
60
|
-
it 'packagizes when symbol' do
|
61
|
-
@rails.send(:packagize, [:activerecord]).should eq(['activerecord'])
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'packagizes when string' do
|
65
|
-
@rails.send(:packagize, ['activerecord']).should eq(['activerecord'])
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'packagizes when underscore' do
|
69
|
-
@rails.send(:packagize, [:active_record]).should eq(['activerecord'])
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context 'multiples packages' do
|
74
|
-
it 'packagizes when symbols' do
|
75
|
-
@rails.send(:packagize, [:activerecord, :activemodel]).should eq(['activerecord', 'activemodel'])
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'packagizes when string' do
|
79
|
-
@rails.send(:packagize, ['activerecord', 'activemodel']).should eq(['activerecord', 'activemodel'])
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'packagizes when underscore' do
|
83
|
-
@rails.send(:packagize, [:active_record, :active_model]).should eq(['activerecord', 'activemodel'])
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'packagizes when mixed' do
|
87
|
-
@rails.send(:packagize, [:active_record, 'activemodel']).should eq(['activerecord', 'activemodel'])
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
describe '#version' do
|
93
|
-
it 'returns specified version when version option' do
|
94
|
-
@rails = Mactag::Tag::Rails.new(:version => '3.0.0')
|
95
|
-
|
96
|
-
@rails.send(:version).should eq('3.0.0')
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'returns same version as rails application when version option is not specified' do
|
100
|
-
Rails.stub(:version) { '3.0.0' }
|
101
|
-
|
102
|
-
@rails.send(:version).should eq('3.0.0')
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|