Class: YARD::CLI::Config
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Command
|
|
Instance Chain:
self,
Command
|
|
Inherits: |
YARD::CLI::Command
|
Defined in: | lib/yard/cli/config.rb |
Overview
::YARD::CLI
command to view or edit configuration options
Class Method Summary
Instance Attribute Summary
Instance Method Summary
- #description
- #run(*args)
- #configure_gemrc private
- #encode_value(value) private
- #encode_values private
- #list_configuration private
- #modify_item private
- #optparse(*args) private
- #view_item private
Command
- Inherited
Constructor Details
.new ⇒ Config
Instance Attribute Details
#append ⇒ Boolean
(rw)
# File 'lib/yard/cli/config.rb', line 20
attr_accessor :append
#as_list ⇒ Boolean
(rw)
# File 'lib/yard/cli/config.rb', line 17
attr_accessor :as_list
#gem_install_cmd ⇒ String? (rw)
# File 'lib/yard/cli/config.rb', line 24
attr_accessor :gem_install_cmd
#key ⇒ Symbol
? (rw)
# File 'lib/yard/cli/config.rb', line 8
attr_accessor :key
#reset ⇒ Boolean
(rw)
# File 'lib/yard/cli/config.rb', line 14
attr_accessor :reset
#values ⇒ Array? (rw)
# File 'lib/yard/cli/config.rb', line 11
attr_accessor :values
Instance Method Details
#configure_gemrc (private)
# File 'lib/yard/cli/config.rb', line 57
def configure_gemrc return unless gem_install_cmd require 'rubygems' ['install', :install, 'gem', :gem].find do |cmd| conf = Gem.configuration[cmd] || "" next if conf.empty? && cmd != :gem conf = conf.split(/\s+/) conf.delete_if {|c| c =~ /^--(no-)?document\b/ } # scrub doc args conf |= ["--document=#{gem_install_cmd}"] conf = conf.join(' ') Gem.configuration[cmd] = conf Gem.configuration.write log.puts "Updated #{Gem.configuration.path || '~/.gemrc'}: '#{cmd}: #{conf}'" true end end
#description
# File 'lib/yard/cli/config.rb', line 36
def description 'Views or edits current global configuration' end
#encode_value(value) (private)
# File 'lib/yard/cli/config.rb', line 111
def encode_value(value) case value when /^-?\d+/; value.to_i when "true"; true when "false"; false else value end end
#encode_values (private)
# File 'lib/yard/cli/config.rb', line 103
def encode_values if values.size == 1 && !as_list encode_value(values.first) else values.map {|v| encode_value(v) } end end
#list_configuration (private)
#modify_item (private)
# File 'lib/yard/cli/config.rb', line 78
def modify_item if reset log.debug "Resetting #{key}" YARD::Config. [key] = YARD::Config::DEFAULT_CONFIG_OPTIONS[key] else log.debug "Setting #{key} to #{values.inspect}" items = encode_values current_items = YARD::Config. [key] items = [current_items].flatten + [items].flatten if append YARD::Config. [key] = items end YARD::Config.save end
#optparse(*args) (private)
# File 'lib/yard/cli/config.rb', line 120
def optparse(*args) list = false self.as_list = false self.append = false opts = OptionParser.new opts. = "Usage: yard config [options] [item [value ...]]" opts.separator "" opts.separator "Example: yard config load_plugins true" opts.separator "" opts.separator "Views and sets configuration items. If an item is provided" opts.separator "With no value, the item is viewed. If a value is provided," opts.separator "the item is modified. Specifying no item is equivalent to --list." opts.separator "If you specify multiple space delimited values, these are" opts.separator "parsed as an array of values." opts.separator "" opts.separator "Note that `true` and `false` are reserved words." opts.separator "" opts.separator "---------------------------------------------------------" opts.separator "" opts.separator "Configuring RubyGems support:" opts.separator "" opts.separator "YARD can automatically generate the YRI index or HTML" opts.separator "documentation in a `gem install` by adding the following" opts.separator "to your ~/.gemrc file:" opts.separator "" opts.separator " gem: \"--document=yri\"" opts.separator "" opts.separator "Note: you can add 'yard' to also generate HTML docs." opts.separator " You can also add 'ri' to continue generating RDoc." opts.separator "" opts.separator "You can also run the following command to configure this" opts.separator "behavior automatically:" opts.separator "" opts.separator " $ yard config --gem-install-yri" opts.separator "" opts.separator "Add --gem-install-yard to also generate HTML." opts.separator "" opts.separator "---------------------------------------------------------" opts.separator "" opts.separator "General options:" opts.on('-l', '--list', 'List current configuration') do list = true end opts.on('-r', '--reset', 'Resets the specific item to default') do self.reset = true end opts.separator "" opts.separator "Modifying keys:" opts.on('-a', '--append', 'Appends items to existing key values') do self.append = true end opts.on('--as-list', 'Forces the value(s) to be wrapped in an array') do self.as_list = true end opts.separator "" opts.separator "Add RubyGems install hook:" opts.on('--gem-install-yri', 'Configures ~/.gemrc to run yri on a gem install') do self.gem_install_cmd = 'yri' if gem_install_cmd != 'yard' end opts.on('--gem-install-yard', 'Configures ~/.gemrc to run yard on a gem install') do self.gem_install_cmd = 'yard' end (opts) (opts, args) args = [] if list self.key = args.shift.to_sym if args.size >= 1 self.values = args if args.size >= 1 args end
#run(*args)
# File 'lib/yard/cli/config.rb', line 40
def run(*args) optparse(*args) if gem_install_cmd configure_gemrc elsif key if reset || !values.empty? modify_item else view_item end else list_configuration end end