mactag 0.5.4 → 0.6.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/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
|