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.
@@ -7,23 +7,21 @@ their definitions.
7
7
 
8
8
 
9
9
  # Exuberant Ctags
10
+
10
11
  First off, you must install [Ctags](http://ctags.sourceforge.net/).
11
- Some systems comes with a **ctags** command already. If you have the
12
+ Some systems comes with a `ctags` binary already. If you have the
12
13
  ctags executable, but have problems creating the tags file. Then make
13
14
  sure that you are using **Exuberant Ctags** and not some other version.
14
15
 
15
16
 
16
17
  # Installation
17
18
 
18
- ## Plugin
19
- Install the plugin:
20
- $ rails plugin install git://github.com/rejeep/mactag.git
21
-
22
- ## Gem
23
19
  Install the gem:
20
+
24
21
  $ gem install mactag
25
22
 
26
- Add mactag to the **Gemfile**:
23
+ Add `mactag` to the `Gemfile`:
24
+
27
25
  group :development do
28
26
  gem 'mactag'
29
27
  end
@@ -31,55 +29,62 @@ Add mactag to the **Gemfile**:
31
29
 
32
30
  # Configuration
33
31
 
34
- To generate a template configuration file (**config/mactag.rb**),
35
- which contains a basic setup and some examples of how to configure
36
- Mactag, use the **mactag** generator:
32
+ To generate the configuration file `config/mactag.rb`, use the
33
+ `mactag` generator. The generated file contains a basic setup and some
34
+ examples of how to configure Mactag.
35
+
37
36
  $ rails generate mactag
38
37
 
39
38
  ## Example mactag.rb file
40
39
 
41
- Mactag::Config.rvm = false
42
- Mactag::Config.gem_home = '/usr/lib/ruby/gems/1.8/gems'
43
- Mactag::Config.binary = 'etags -o {OUTPUT} {INPUT}'
44
- Mactag::Config.tags_file = 'TAGS'
40
+ Mactag.configure do |config|
41
+ # Do not use RVM
42
+ config.rvm = false
43
+ config.gem_home = '/usr/lib/ruby/gems/1.8/gems'
44
+
45
+ # Binary when installing ctags from Homebrew
46
+ config.binary = '/usr/local/Cellar/ctags/5.8/bin/ctags -e -o {OUTPUT} {INPUT}'
47
+
48
+ # Change name of output file
49
+ config.tags_file = 'DA-TAGS'
50
+ end
45
51
 
46
52
  Mactag do
47
- app 'app/**/*.rb', 'lib/*.rb'
48
-
49
- plugins 'thinking-sphinx', 'whenever'
53
+ index 'app/models/*.rb'
54
+
55
+ index 'carrerwave', 'simple_form'
56
+ index 'redcarpet', :version => '1.17.2'
50
57
 
51
- gems 'paperclip', 'authlogic'
52
- gem 'formtastic', :version => '0.9.7'
53
-
54
- rails :except => :actionmailer, :version => '2.3.5'
58
+ index :rails, :except => :actionmailer, :version => '3.1.3'
55
59
  end
56
60
 
57
- ## Options
61
+ ## Configuration Options
58
62
  The available configuration options are described below.
59
63
 
60
- ### Mactag::Config.rvm
64
+ ### rvm
61
65
  If true, use [Rvm](http://rvm.beginrescueend.com/) when indexing gems.
62
66
  Defaults to: `true`
63
67
 
64
- ### Mactag::Config.gem_home
65
- Path to gems. No need to set this when using **Mactag::Config.rvm**.
68
+ ### gem_home
69
+ Path to gems. No need to set this when using `rvm`.
66
70
  Defaults to: `/Library/Ruby/Gems/1.8/gems`
67
71
 
68
- ### Mactag::Config.binary
69
- The command to run when creating the TAGS-file. **{OUTPUT}** will be
70
- replaced with the value of **Mactag::Config.tags_file**. **{INPUT}**
72
+ ### binary
73
+ The command to run when creating the TAGS-file. `{OUTPUT}` will be
74
+ replaced with the value of `tags_file` configuration option. `{INPUT}`
71
75
  will be replaced with all files to index.
72
76
  Defaults to: `ctags -o {OUTPUT} -e {INPUT}`
73
77
 
74
- ### Mactag::Config.tags_file
78
+ ### tags_file
75
79
  Name of the output tags file.
76
80
  Defaults to: `TAGS`
77
81
 
78
82
 
79
83
  # Usage
80
84
  To create the TAGS file, simply run:
85
+
81
86
  $ rake mactag
82
87
 
83
88
 
84
89
  # License
85
- Copyright (c) 2010 Johan Andersson, released under the MIT license
90
+ Copyright (c) 2010-2012 Johan Andersson, released under the MIT license
data/Rakefile CHANGED
@@ -1,12 +1,14 @@
1
1
  require 'rake'
2
- require 'rake/testtask'
3
-
4
- Rake::TestTask.new(:spec) do |t|
5
- t.libs << 'lib'
6
- t.libs << 'spec'
7
- t.pattern = 'spec/**/*_spec.rb'
8
- t.verbose = true
9
- end
2
+ require 'yard'
3
+ require 'rspec/core/rake_task'
10
4
 
11
5
  task :default => :spec
12
6
  task :test => :spec
7
+
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ t.rspec_opts = %w[--color]
10
+ end
11
+
12
+ YARD::Rake::YardocTask.new do |t|
13
+ t.files = ['lib/**/*.rb']
14
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.4
1
+ 0.6.0
@@ -1,98 +1,39 @@
1
- ##
2
- #
3
- # Rvm support or not. Mactag will automatically set path to gems.
4
- #
5
- # Defaults to: true
6
- #
7
- # Example:
8
- # Mactag::Config.rvm = false
9
- #
1
+ Mactag.configure do |config|
2
+ # Use RVM to locate project gems.
3
+ # config.rvm = false
10
4
 
11
- ##
12
- #
13
- # Path to gems.
14
- #
15
- # Change to whatever your system is using, if not the default. Most
16
- # GNU/Linux systems use: /usr/lib/ruby/gems/1.8/gems
17
- #
18
- # (You don't need to set this when Mactag::Config.rvm is true)
19
- #
20
- # Defaults to: '/Library/Ruby/Gems/1.8/gems'
21
- #
22
- # Example:
23
- # Mactag::Config.gem_home = '/usr/lib/ruby/gems/1.8/gems'
24
- #
5
+ # Path to gems. No need to set this when RVM is used!
6
+ # config.gem_home = '/Library/Ruby/Gems/1.8/gems'
25
7
 
26
- ##
27
- #
28
- # Name of tags file.
29
- #
30
- # Defaults to: 'TAGS'
31
- #
32
- # Example:
33
- # Mactag::Config.tags_file = '.tags'
34
- #
8
+ # Name of tags file to create.
9
+ # config.tags_file = '.tags'
35
10
 
36
- ##
37
- #
38
- # This is the command used to create the TAGS table.
39
- #
40
- # The command must specify:
41
- # {INPUT} - replaced by the input files to tag
42
- # {OUTPUT} - replaced by Mactag::Config.tags_file
43
- #
44
- # Defaults to: 'ctags -o {OUTPUT} -e {INPUT}'
45
- #
46
- # Example:
47
- # Mactag::Config.binary = '/usr/local/Cellar/ctags/5.8/bin/ctags -e -o {OUTPUT} {INPUT}'
48
- #
11
+ # Command used to create the tags table. {INPUT} and {OUTPUT} are required!
12
+ # config.binary = '/usr/local/Cellar/ctags/5.8/bin/ctags -e -o {OUTPUT} {INPUT}'
13
+ end
49
14
 
50
15
  Mactag do
51
- ##
52
- #
53
- # Index all ruby files in app recursive and all ruby files directly under lib.
54
- # app 'app/**/*.rb', 'lib/*.rb'
55
- #
16
+ # Index current project.
17
+ # index :app
56
18
 
57
- ##
58
- #
59
- # Index the plugins thinking-sphinx and formtastic.
60
- # plugins 'thinking-sphinx', 'formtastic'
61
- #
19
+ # Index all models and helpers.
20
+ # index 'app/models/*.rb', 'app/helpers/*.rb'
62
21
 
63
- ##
64
- #
65
- # Index the gems paperclip and authlogic.
66
- # gems 'paperclip', 'authlogic'
67
- #
22
+ # Index the gems carrierwave and redcarpet.
23
+ # index 'carrierwave', 'redcarpet'
68
24
 
69
- ##
70
- #
71
- # Index the gem formtastic version 0.9.7.
72
- # gem 'formtastic', :version => '0.9.7'
73
- #
25
+ # Index the gem simple_form version 1.5.2.
26
+ # index 'simple_form', :version => '1.5.2'
74
27
 
75
- ##
76
- #
77
- # Index all rails packages, except actionmailer.
78
- # rails :except => :actionmailer
79
- #
28
+ # Index rails.
29
+ # index :rails
80
30
 
81
- ##
82
- #
83
- # Index only rails packages activerecord and activesupport.
84
- # rails :only => [:activerecord, :active_support]
85
- #
31
+ # Index rails except action mailer.
32
+ # index :rails, :except => :actionmailer
86
33
 
87
- ##
88
- #
89
- # Index all rails packages, version 3.0.0.
90
- # rails :version => '3.0.0'
91
- #
34
+ # Index only rails packages activerecord and activesupport.
35
+ # index :rails, :only => %w(activerecord activesupport)
92
36
 
93
- ##
94
- #
95
- # Index all rails packages, same version as current application.
96
- # rails
97
- #
37
+ # Index rails, version 3.1.3.
38
+ # index :rails, :version => '3.1.3'
98
39
  end
@@ -2,7 +2,7 @@ require 'mactag/railtie'
2
2
  require 'mactag/config'
3
3
  require 'mactag/builder'
4
4
  require 'mactag/dsl'
5
- require 'mactag/tag'
5
+ require 'mactag/indexer'
6
6
  require 'mactag/ctags'
7
7
  require 'mactag/bundler'
8
8
  require 'mactag/errors'
@@ -10,6 +10,12 @@ require 'mactag/errors'
10
10
  module Mactag
11
11
  autoload :Bundler, 'bundler'
12
12
  autoload :Rails, 'rails'
13
+
14
+ class << self
15
+ def configure(&block)
16
+ Mactag::Config.configure(&block)
17
+ end
18
+ end
13
19
  end
14
20
 
15
21
  def Mactag(&block)
@@ -1,9 +1,7 @@
1
1
  module Mactag
2
- ##
3
- #
4
- # Tag builder.
5
- #
6
2
  class Builder
3
+ attr_reader :tags
4
+
7
5
  def initialize
8
6
  @tags = []
9
7
  end
@@ -39,13 +37,13 @@ module Mactag
39
37
  class << self
40
38
  def create
41
39
  unless gem_home_exists?
42
- raise Mactag::MactagError.new("Specified gem home directory does not exist: #{Mactag::Config.gem_home}")
40
+ raise Mactag::MactagError.new("Gem home directory '#{Mactag::Config.gem_home}' does not exist")
43
41
  end
44
42
 
45
43
  if builder.has_gems?
46
44
  Mactag::Ctags.new(@builder.files, Mactag::Config.tags_file).create
47
45
 
48
- puts 'Successfully generated TAGS file'
46
+ puts "Successfully generated #{Mactag::Config.tags_file} file"
49
47
  else
50
48
  raise Mactag::MactagError.new('Nothing to tag')
51
49
  end
@@ -5,32 +5,34 @@ module Mactag
5
5
  # used.
6
6
  #
7
7
  class Bundler
8
- def gems
9
- dependencies.map do |dependency|
10
- Mactag::Tag::Gem.new(dependency, specs[dependency])
8
+ class << self
9
+ def gems
10
+ dependencies.map do |dependency|
11
+ [dependency, specs[dependency]]
12
+ end
11
13
  end
12
- end
13
14
 
14
15
 
15
- private
16
+ private
16
17
 
17
- def specs
18
- @specs ||= runtime.specs.inject({}) do |hash, spec|
19
- hash[spec.name] = spec.version.to_s
20
- hash
18
+ def specs
19
+ @specs ||= runtime.specs.inject({}) do |hash, spec|
20
+ hash[spec.name] = spec.version.to_s
21
+ hash
22
+ end
21
23
  end
22
- end
23
24
 
24
- def dependencies
25
- default = runtime.dependencies.select { |dependency|
26
- dependency.groups.include?(:default)
27
- }.collect(&:name)
28
- default.delete('rails')
29
- default
30
- end
25
+ def dependencies
26
+ default = runtime.dependencies.select { |dependency|
27
+ dependency.groups.include?(:default)
28
+ }.map(&:name)
29
+ default.delete('rails')
30
+ default
31
+ end
31
32
 
32
- def runtime
33
- @runtime ||= ::Bundler.load
33
+ def runtime
34
+ @runtime ||= ::Bundler.load
35
+ end
34
36
  end
35
37
  end
36
38
  end
@@ -2,20 +2,16 @@ module Mactag
2
2
  class Config
3
3
  ##
4
4
  #
5
- # The command to run (replacing {OUTPUT} with Mactag::Config.tags_file
6
- # and {INPUT} with the input files) when creating the TAGS-file.
7
- #
8
- # Mactag::Config.binary = 'etags -o {OUTPUT} {INPUT}'
5
+ # The command to run (replacing <tt>{OUTPUT}</tt> with <tt>tags_file</tt>
6
+ # and <tt>{INPUT}</tt> with the input files) when creating the tags file.
9
7
  #
10
8
  @@binary = 'ctags -o {OUTPUT} -e {INPUT}'
11
- cattr_accessor :binary
9
+ cattr_reader :binary
12
10
 
13
11
  ##
14
12
  #
15
13
  # Name of the output tags file.
16
14
  #
17
- # Mactag::Config.binary = 'TAGS_FILE'
18
- #
19
15
  @@tags_file = 'TAGS'
20
16
  cattr_accessor :tags_file
21
17
 
@@ -24,8 +20,6 @@ module Mactag
24
20
  # If using Ruby Version Manager (RVM), setting this option to true
25
21
  # will enable Mactag to find out the gem path automatically.
26
22
  #
27
- # Mactag::Config.rvm = false
28
- #
29
23
  @@rvm = true
30
24
  cattr_accessor :rvm
31
25
 
@@ -33,16 +27,28 @@ module Mactag
33
27
  #
34
28
  # The system folder where the gems are located.
35
29
  #
36
- # Mactag::Config.gem_home = '/Library/Ruby/Gems/1.8/gems'
37
- #
38
30
  @@gem_home = '/Library/Ruby/Gems/1.8/gems'
39
31
  cattr_writer :gem_home
40
32
 
41
- def self.gem_home
42
- if rvm
43
- File.join(ENV['GEM_HOME'], 'gems')
44
- else
45
- @@gem_home
33
+ class << self
34
+ def binary=(binary)
35
+ if binary.include?('{INPUT}') && binary.include?('{OUTPUT}')
36
+ @@binary = binary
37
+ else
38
+ raise Mactag::MactagError.new("Binary command must include '{INPUT}' and '{OUTPUT}'")
39
+ end
40
+ end
41
+
42
+ def gem_home
43
+ if rvm
44
+ File.join(ENV['GEM_HOME'], 'gems')
45
+ else
46
+ @@gem_home
47
+ end
48
+ end
49
+
50
+ def configure(&block)
51
+ yield self
46
52
  end
47
53
  end
48
54
  end
@@ -4,6 +4,8 @@ module Mactag
4
4
  # Wrapper around Ctags command.
5
5
  #
6
6
  class Ctags
7
+ attr_reader :input, :output
8
+
7
9
  def initialize(input, output)
8
10
  @input = Array(input)
9
11
  @output = output