mactag 0.1.1 → 0.2.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 +19 -16
- data/VERSION +1 -1
- data/features/app.feature +82 -16
- data/features/gem.feature +116 -36
- data/features/plugin.feature +86 -21
- data/features/rails.feature +6 -0
- data/features/step_definitions/mactag_steps.rb +43 -0
- data/features/support/env.rb +4 -0
- data/features/support/rails_app.rb +20 -48
- data/features/support/tags_file.rb +8 -5
- data/lib/generators/mactag/templates/mactag.rb +50 -9
- data/lib/mactag.rb +1 -1
- data/lib/mactag/config.rb +28 -7
- data/lib/mactag/table.rb +22 -9
- data/lib/mactag/tag/app.rb +10 -10
- data/lib/mactag/tag/gem.rb +51 -17
- data/lib/mactag/tag/parser.rb +12 -2
- data/lib/mactag/tag/plugin.rb +15 -12
- data/lib/mactag/tag/rails.rb +43 -67
- data/test/mactag/config_test.rb +33 -3
- data/test/mactag/tag/app_test.rb +3 -5
- data/test/mactag/tag/gem_test.rb +47 -20
- data/test/mactag/tag/plugin_test.rb +23 -25
- data/test/mactag/tag/rails_test.rb +18 -123
- metadata +105 -27
- data/TODO +0 -8
- data/features/rails/actionmailer/lib/action_mailer/base.rb +0 -9
- data/features/rails/actionpack/lib/action_controller/caching/actions.rb +0 -11
- data/features/rails/actionpack/lib/action_view/action_view/helpers/form_tag_helper.rb +0 -9
- data/features/rails/activerecord/lib/active_record/associations.rb +0 -9
- data/features/rails/activeresource/lib/active_resource/connection.rb +0 -7
- data/features/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +0 -5
- data/features/rails_gem.feature +0 -89
- data/features/rails_vendor.feature +0 -57
- data/features/step_definitions/gem_steps.rb +0 -22
- data/features/step_definitions/mactab_steps.rb +0 -57
- data/features/step_definitions/plugin_steps.rb +0 -22
- data/features/step_definitions/rails_steps.rb +0 -20
- data/lib/mactag/tag/versioned.rb +0 -22
data/lib/mactag/tag/parser.rb
CHANGED
@@ -1,33 +1,43 @@
|
|
1
1
|
module Mactag
|
2
2
|
module Tag
|
3
3
|
class Parser
|
4
|
-
|
5
4
|
def initialize(table)
|
6
5
|
@table = table
|
7
6
|
end
|
8
7
|
|
8
|
+
##
|
9
|
+
#
|
9
10
|
# @see Mactag::Tag::App
|
11
|
+
#
|
10
12
|
def app(*files)
|
11
13
|
@table << Mactag::Tag::App.new(*files)
|
12
14
|
end
|
13
15
|
|
16
|
+
##
|
17
|
+
#
|
14
18
|
# @see Mactag::Tag::Plugin
|
19
|
+
#
|
15
20
|
def plugin(*plugins)
|
16
21
|
@table << Mactag::Tag::Plugin.new(*plugins)
|
17
22
|
end
|
18
23
|
alias_method :plugins, :plugin
|
19
24
|
|
25
|
+
##
|
26
|
+
#
|
20
27
|
# @see Mactag::Tag::Gem
|
28
|
+
#
|
21
29
|
def gem(*gems)
|
22
30
|
@table << Mactag::Tag::Gem.new(*gems)
|
23
31
|
end
|
24
32
|
alias_method :gems, :gem
|
25
33
|
|
34
|
+
##
|
35
|
+
#
|
26
36
|
# @see Mactag::Tag::Rails
|
37
|
+
#
|
27
38
|
def rails(options = {})
|
28
39
|
@table << Mactag::Tag::Rails.new(options)
|
29
40
|
end
|
30
|
-
|
31
41
|
end
|
32
42
|
end
|
33
43
|
end
|
data/lib/mactag/tag/plugin.rb
CHANGED
@@ -1,38 +1,41 @@
|
|
1
1
|
module Mactag
|
2
2
|
module Tag
|
3
|
-
|
4
|
-
#
|
3
|
+
##
|
4
|
+
#
|
5
|
+
# Tags plugins in current Rails application.
|
5
6
|
#
|
6
7
|
# ==== Examples
|
7
8
|
# Mactag::Table.generate do
|
8
|
-
# # Tag
|
9
|
-
# plugin
|
9
|
+
# # Tag single plugin
|
10
|
+
# plugin 'whenever'
|
11
|
+
#
|
12
|
+
# # Tag multiple plugins
|
13
|
+
# plugins 'thinking-sphinx', 'formtastic'
|
10
14
|
#
|
11
|
-
# # Tag
|
12
|
-
# plugins
|
15
|
+
# # Tag all plugins
|
16
|
+
# plugins
|
13
17
|
# do
|
18
|
+
#
|
14
19
|
class Plugin
|
15
|
-
|
16
|
-
PLUGIN_PATH = File.join("vendor", "plugins")
|
20
|
+
PLUGIN_PATH = File.join('vendor', 'plugins')
|
17
21
|
|
18
22
|
def initialize(*plugins)
|
19
23
|
@plugins = plugins
|
20
24
|
end
|
21
25
|
|
22
26
|
def files
|
23
|
-
return File.join(PLUGIN_PATH,
|
27
|
+
return File.join(PLUGIN_PATH, '*', 'lib', '**', '*.rb') if @plugins.empty?
|
24
28
|
|
25
29
|
result = []
|
26
30
|
@plugins.each do |plugin|
|
27
31
|
if File.exist?(File.join(PLUGIN_PATH, plugin))
|
28
|
-
result << File.join(PLUGIN_PATH, plugin,
|
32
|
+
result << File.join(PLUGIN_PATH, plugin, 'lib', '**', '*.rb')
|
29
33
|
else
|
30
|
-
|
34
|
+
Mactag.warn "Plugin #{plugin} not found"
|
31
35
|
end
|
32
36
|
end
|
33
37
|
result
|
34
38
|
end
|
35
|
-
|
36
39
|
end
|
37
40
|
end
|
38
41
|
end
|
data/lib/mactag/tag/rails.rb
CHANGED
@@ -1,19 +1,20 @@
|
|
1
|
-
require 'mactag/tag/versioned'
|
2
|
-
|
3
1
|
module Mactag
|
4
2
|
module Tag
|
5
|
-
|
6
|
-
#
|
3
|
+
##
|
4
|
+
#
|
5
|
+
# Tags Rails gem.
|
7
6
|
#
|
8
7
|
# ==== Packages
|
9
|
-
# Naming does not matter
|
8
|
+
# Naming does not matter, so *activerecord* and *active_record* are the same.
|
10
9
|
#
|
11
|
-
# * activesupport
|
12
|
-
# * activeresource
|
13
|
-
# * activerecord
|
14
10
|
# * actionmailer
|
15
|
-
# *
|
16
|
-
# *
|
11
|
+
# * actionpack
|
12
|
+
# * activemodel
|
13
|
+
# * activerecord
|
14
|
+
# * activeresource
|
15
|
+
# * railties
|
16
|
+
# * activesupport
|
17
|
+
#
|
17
18
|
#
|
18
19
|
# ==== Examples
|
19
20
|
# Mactag::Table.generate do
|
@@ -21,7 +22,7 @@ module Mactag
|
|
21
22
|
# rails
|
22
23
|
#
|
23
24
|
# # Tag all rails packages, version 2.3.5
|
24
|
-
# rails :version =>
|
25
|
+
# rails :version => '2.3.5'
|
25
26
|
#
|
26
27
|
# # Tag only activerecord, latest version
|
27
28
|
# rails :only => :active_record
|
@@ -33,25 +34,22 @@ module Mactag
|
|
33
34
|
# rails :only => [:activerecord, :action_view]
|
34
35
|
#
|
35
36
|
# # Tag all packages except activerecord and actionview, latest version
|
36
|
-
# rails :except => [
|
37
|
+
# rails :except => ['activerecord', :action_controller]
|
37
38
|
#
|
38
39
|
# # Tag all packages except actionmailer, version 2.3.4
|
39
|
-
# rails :except => :actionmailer, :version =>
|
40
|
+
# rails :except => :actionmailer, :version => '2.3.4'
|
40
41
|
# do
|
42
|
+
#
|
41
43
|
class Rails
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
:actionmailer => ["actionmailer", "action_mailer"],
|
52
|
-
:actioncontroller => ["actionpack", "action_controller"],
|
53
|
-
:actionview => ["actionpack", "action_view"]
|
54
|
-
}
|
44
|
+
PACKAGES = [
|
45
|
+
:actionmailer,
|
46
|
+
:actionpack,
|
47
|
+
:activemodel,
|
48
|
+
:activerecord,
|
49
|
+
:activeresource,
|
50
|
+
:railties,
|
51
|
+
:activesupport
|
52
|
+
]
|
55
53
|
|
56
54
|
def initialize(options)
|
57
55
|
@options = options
|
@@ -62,65 +60,44 @@ module Mactag
|
|
62
60
|
|
63
61
|
def files
|
64
62
|
result = []
|
65
|
-
|
66
63
|
packages.each do |package|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
64
|
+
if PACKAGES.include?(package)
|
65
|
+
if version = @options[:version]
|
66
|
+
gem = Gem.new(package.to_s, :version => version)
|
67
|
+
else
|
68
|
+
gem = Gem.new(package.to_s)
|
69
|
+
end
|
70
|
+
result << gem.files
|
71
|
+
end
|
75
72
|
end
|
76
|
-
|
77
|
-
result.flatten
|
73
|
+
result
|
78
74
|
end
|
79
75
|
|
80
76
|
|
81
77
|
private
|
82
78
|
|
79
|
+
##
|
80
|
+
#
|
81
|
+
# Returns a list of all packages that should be included.
|
82
|
+
#
|
83
83
|
def packages
|
84
84
|
result = []
|
85
|
-
|
86
85
|
unless @only || @except
|
87
|
-
result = PACKAGES
|
86
|
+
result = PACKAGES
|
88
87
|
else
|
89
88
|
if @only
|
90
89
|
result = @only
|
91
90
|
elsif @except
|
92
|
-
result = PACKAGES
|
91
|
+
result = PACKAGES - @except
|
93
92
|
end
|
94
93
|
end
|
95
|
-
|
96
94
|
result
|
97
95
|
end
|
98
96
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
unless Mactag::Tag::Rails.vendor?
|
104
|
-
top = paths.first
|
105
|
-
if version = @options[:version]
|
106
|
-
top = "#{top}-#{version}"
|
107
|
-
else
|
108
|
-
top = File.basename(latest(top))
|
109
|
-
end
|
110
|
-
paths[0] = top
|
111
|
-
end
|
112
|
-
|
113
|
-
File.join(paths)
|
114
|
-
end
|
115
|
-
|
116
|
-
def self.vendor?
|
117
|
-
File.exist?(VENDOR)
|
118
|
-
end
|
119
|
-
|
120
|
-
def rails_home
|
121
|
-
@rails_home ||= Mactag::Tag::Rails.vendor? ? VENDOR : Mactag::Config.gem_home
|
122
|
-
end
|
123
|
-
|
97
|
+
##
|
98
|
+
#
|
99
|
+
# Packagizes all +pkgs+.
|
100
|
+
#
|
124
101
|
def packagize!(pkgs)
|
125
102
|
return nil if pkgs.blank?
|
126
103
|
|
@@ -128,7 +105,6 @@ module Mactag
|
|
128
105
|
"#{pkg}".gsub(/[^a-z]/, '').to_sym
|
129
106
|
end
|
130
107
|
end
|
131
|
-
|
132
108
|
end
|
133
109
|
end
|
134
110
|
end
|
data/test/mactag/config_test.rb
CHANGED
@@ -1,10 +1,40 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class ConfigTest < ActiveSupport::TestCase
|
4
|
+
context 'binary' do
|
5
|
+
setup do
|
6
|
+
@binary = Mactag::Config.binary
|
7
|
+
end
|
4
8
|
|
5
|
-
|
6
|
-
|
7
|
-
|
9
|
+
should 'be right command' do
|
10
|
+
assert_equal 'ctags -o TAGS -e', @binary
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
14
|
+
context 'gem home' do
|
15
|
+
context 'when using RVM' do
|
16
|
+
setup do
|
17
|
+
Mactag::Config.stubs(:rvm).returns(true)
|
18
|
+
File.stubs(:join).returns('/path/to/rvm/gems')
|
19
|
+
|
20
|
+
@gem_home = Mactag::Config.gem_home
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'correct' do
|
24
|
+
assert_equal '/path/to/rvm/gems', @gem_home
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when not using RVM' do
|
29
|
+
setup do
|
30
|
+
Mactag::Config.stubs(:rvm).returns(false)
|
31
|
+
|
32
|
+
@gem_home = Mactag::Config.gem_home
|
33
|
+
end
|
34
|
+
|
35
|
+
should 'correct' do
|
36
|
+
assert_equal '/Library/Ruby/Gems/1.8/gems', @gem_home
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
10
40
|
end
|
data/test/mactag/tag/app_test.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class AppTest < ActiveSupport::TestCase
|
4
|
-
|
5
|
-
context "an app tag" do
|
4
|
+
context 'application tag' do
|
6
5
|
setup do
|
7
|
-
@tags = [
|
6
|
+
@tags = ['app/**/*.rb', 'public/javascripts/*.js']
|
8
7
|
@app = Mactag::Tag::App.new(@tags)
|
9
8
|
end
|
10
9
|
|
11
|
-
should
|
10
|
+
should 'return the correct files' do
|
12
11
|
assert_same_elements [@tags], @app.files
|
13
12
|
end
|
14
13
|
end
|
15
|
-
|
16
14
|
end
|
data/test/mactag/tag/gem_test.rb
CHANGED
@@ -1,56 +1,83 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class GemTest < ActiveSupport::TestCase
|
4
|
+
def setup
|
5
|
+
File.stubs(:directory?).returns(true)
|
6
|
+
end
|
4
7
|
|
5
|
-
context
|
8
|
+
context 'gem with version' do
|
6
9
|
setup do
|
7
|
-
|
10
|
+
Mactag::Config.stubs(:gem_home).returns('GEM_HOME')
|
11
|
+
|
12
|
+
@gem = Mactag::Tag::Gem.new('thinking-sphinx', :version => '1.0.0')
|
8
13
|
end
|
9
14
|
|
10
|
-
should
|
11
|
-
assert_contains @gem.files, File.join(
|
15
|
+
should 'return the gem with that version' do
|
16
|
+
assert_contains @gem.files, File.join('GEM_HOME', 'thinking-sphinx-1.0.0', 'lib', '**', '*.rb')
|
12
17
|
end
|
13
18
|
end
|
14
19
|
|
15
|
-
context
|
16
|
-
context
|
20
|
+
context 'gem without version' do
|
21
|
+
context 'single gem' do
|
17
22
|
setup do
|
18
|
-
Dir.stubs(:glob).returns(
|
23
|
+
Dir.stubs(:glob).returns(['whenever-0.3.7'])
|
19
24
|
|
20
|
-
@gem = Mactag::Tag::Gem.new(
|
25
|
+
@gem = Mactag::Tag::Gem.new('whenever')
|
21
26
|
end
|
22
27
|
|
23
|
-
should
|
24
|
-
assert_contains @gem.files,
|
28
|
+
should 'return that gem' do
|
29
|
+
assert_contains @gem.files, File.join('whenever-0.3.7', 'lib', '**', '*.rb')
|
25
30
|
end
|
26
31
|
end
|
27
32
|
|
28
|
-
context
|
33
|
+
context 'multiple gems' do
|
29
34
|
setup do
|
30
|
-
Dir.stubs(:glob).returns([
|
35
|
+
Dir.stubs(:glob).returns(['whenever-0.3.7', 'whenever-0.3.6'])
|
31
36
|
|
32
|
-
@gem = Mactag::Tag::Gem.new(
|
37
|
+
@gem = Mactag::Tag::Gem.new('whenever')
|
33
38
|
end
|
34
39
|
|
35
|
-
should
|
36
|
-
assert_contains @gem.files,
|
37
|
-
assert_does_not_contain @gem.files,
|
40
|
+
should 'return the gem with the latest version' do
|
41
|
+
assert_contains @gem.files, File.join('whenever-0.3.7', 'lib', '**', '*.rb')
|
42
|
+
assert_does_not_contain @gem.files, File.join('whenever-0.3.6', 'lib', '**', '*.rb')
|
38
43
|
end
|
39
44
|
end
|
40
45
|
end
|
41
46
|
|
42
|
-
context
|
47
|
+
context 'gem that does not exist' do
|
43
48
|
setup do
|
44
|
-
Dir.stubs(:glob).returns([
|
49
|
+
Dir.stubs(:glob).returns([])
|
50
|
+
File.stubs(:directory?).returns(false)
|
45
51
|
|
46
|
-
@gem = Mactag::Tag::Gem.new(
|
52
|
+
@gem = Mactag::Tag::Gem.new('whenever')
|
47
53
|
end
|
48
54
|
|
49
|
-
should
|
55
|
+
should 'not raise exception because no such gem' do
|
50
56
|
assert_nothing_raised do
|
51
57
|
assert_equal [], @gem.files
|
52
58
|
end
|
53
59
|
end
|
54
60
|
end
|
55
61
|
|
62
|
+
context '#exists?' do
|
63
|
+
setup do
|
64
|
+
@gem = Mactag::Tag::Gem.new('whatever')
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with valid gem' do
|
68
|
+
setup do
|
69
|
+
File.stubs(:directory?).returns(true)
|
70
|
+
end
|
71
|
+
|
72
|
+
should 'exist' do
|
73
|
+
assert @gem.send(:exists?, 'whatever')
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'with no gem' do
|
78
|
+
should 'exist' do
|
79
|
+
assert !@gem.send(:exists?, nil)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
56
83
|
end
|
@@ -1,60 +1,58 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class PluginTest < ActiveSupport::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
assert_equal "vendor/plugins", Mactag::Tag::Plugin::PLUGIN_PATH
|
4
|
+
should 'have correct plugin path' do
|
5
|
+
assert_equal 'vendor/plugins', Mactag::Tag::Plugin::PLUGIN_PATH
|
7
6
|
end
|
8
7
|
|
9
|
-
context
|
8
|
+
context 'with no arguments' do
|
10
9
|
setup do
|
11
|
-
File.stubs(:exist?).returns(true)
|
12
|
-
|
13
10
|
@plugin = Mactag::Tag::Plugin.new
|
14
11
|
end
|
15
12
|
|
16
|
-
should
|
17
|
-
assert_equal @plugin.files,
|
13
|
+
should 'return all plugins as path' do
|
14
|
+
assert_equal @plugin.files, 'vendor/plugins/*/lib/**/*.rb'
|
18
15
|
end
|
19
16
|
end
|
20
17
|
|
21
|
-
context
|
18
|
+
context 'with single plugin' do
|
22
19
|
setup do
|
23
20
|
File.stubs(:exist?).returns(true)
|
24
|
-
|
25
|
-
@plugin = Mactag::Tag::Plugin.new(
|
21
|
+
|
22
|
+
@plugin = Mactag::Tag::Plugin.new('thinking-sphinx')
|
26
23
|
end
|
27
24
|
|
28
|
-
should
|
29
|
-
|
25
|
+
should 'return the path to that plugin' do
|
26
|
+
assert_same_elements ['vendor/plugins/thinking-sphinx/lib/**/*.rb'], @plugin.files
|
30
27
|
end
|
31
28
|
end
|
32
29
|
|
33
|
-
context
|
30
|
+
context 'with multiple plugins' do
|
34
31
|
setup do
|
35
32
|
File.stubs(:exist?).returns(true)
|
36
|
-
|
37
|
-
@plugin = Mactag::Tag::Plugin.new(
|
33
|
+
|
34
|
+
@plugin = Mactag::Tag::Plugin.new('thinking-sphinx', 'formtastic')
|
38
35
|
end
|
39
36
|
|
40
|
-
should
|
41
|
-
|
42
|
-
|
37
|
+
should 'return the paths to those plugins' do
|
38
|
+
assert_same_elements @plugin.files, [
|
39
|
+
'vendor/plugins/thinking-sphinx/lib/**/*.rb',
|
40
|
+
'vendor/plugins/formtastic/lib/**/*.rb'
|
41
|
+
]
|
43
42
|
end
|
44
43
|
end
|
45
44
|
|
46
|
-
context
|
45
|
+
context 'plugin that does not exist' do
|
47
46
|
setup do
|
48
47
|
File.stubs(:exist?).returns(false)
|
49
|
-
|
50
|
-
@plugin = Mactag::Tag::Plugin.new(
|
48
|
+
|
49
|
+
@plugin = Mactag::Tag::Plugin.new('typo')
|
51
50
|
end
|
52
51
|
|
53
|
-
should
|
52
|
+
should 'not raise exception because no such plugin' do
|
54
53
|
assert_nothing_raised do
|
55
|
-
|
54
|
+
assert_same_elements [], @plugin.files
|
56
55
|
end
|
57
56
|
end
|
58
57
|
end
|
59
|
-
|
60
58
|
end
|