Module: GemfileUtils::Cli::Comments

Included in:
Base
Defined in:
lib/gemfile_utils/cli/modules/comments.rb

Class Method Summary collapse

Class Method Details

.included(thor) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/gemfile_utils/cli/modules/comments.rb', line 5

def self.included(thor)
  thor.class_eval do

    desc 'comments', 'Comment Gemfile with gems descriptions fetched from rubygems'
    method_option :gemfile, default: 'Gemfile'
    method_option :licenses, default: 'false'
    method_option :homepage, default: 'false'

    def comments
      gemfile_dependencies.each do |dependency|
        add_comment(dependency.name, ruby_gems(dependency.name), ' ' * dependency.instance_variable_get(:@indention) )
      end
    end

    protected

    def add_comment(gem_name, gem_data, indention = '')
      before_regexp =  Regexp.new("[\s]*gem[\s]+['\"]#{gem_name}['\"]")
      info = gem_data['info']
      info = add_licences(info, gem_data) if options[:licenses]
      info = add_homepage(info, gem_data) if options[:homepage]
      inject_into_file(options[:gemfile], comment_block(info, indention), before: before_regexp) if info
    end

    def add_licences(info, gem_data)
      licenses = gem_data['licenses']
      licenses = Base::UNKNOWN_LICENCES if licenses.nil? || licenses.empty?
      "(#{licenses * ', '}) #{info}"
    end

    def add_homepage(info, gem_data)
      homepage = gem_data['homepage_uri']
      return info if  homepage.nil? || homepage.empty?
      "#{info} (#{homepage})"
    end

  end
end