lib/yard/cli/config.rb in yard-0.9.16 vs lib/yard/cli/config.rb in yard-0.9.17
- old
+ new
@@ -1,198 +1,198 @@
-# frozen_string_literal: true
-module YARD
- module CLI
- # CLI command to view or edit configuration options
- # @since 0.6.2
- class Config < Command
- # @return [Symbol, nil] the key to view/edit, if any
- attr_accessor :key
-
- # @return [Array, nil] the list of values to set (or single value), if modifying
- attr_accessor :values
-
- # @return [Boolean] whether to reset the {#key}
- attr_accessor :reset
-
- # @return [Boolean] whether the value being set should be inside a list
- attr_accessor :as_list
-
- # @return [Boolean] whether to append values to existing key
- attr_accessor :append
-
- # @return [String, nil] command to use when configuring ~/.gemrc file.
- # If the string is nil, configuration should not occur.
- attr_accessor :gem_install_cmd
-
- def initialize
- super
- self.key = nil
- self.values = []
- self.reset = false
- self.append = false
- self.as_list = false
- self.gem_install_cmd = nil
- end
-
- def description
- 'Views or edits current global configuration'
- end
-
- 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
-
- private
-
- 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
-
- def modify_item
- if reset
- log.debug "Resetting #{key}"
- YARD::Config.options[key] = YARD::Config::DEFAULT_CONFIG_OPTIONS[key]
- else
- log.debug "Setting #{key} to #{values.inspect}"
- items = encode_values
- current_items = YARD::Config.options[key]
- items = [current_items].flatten + [items].flatten if append
- YARD::Config.options[key] = items
- end
- YARD::Config.save
- end
-
- def view_item
- log.debug "Viewing #{key}"
- log.puts YARD::Config.options[key].inspect
- end
-
- def list_configuration
- log.debug "Listing configuration"
- require 'yaml'
- log.puts YAML.dump(YARD::Config.options).sub(/\A--.*\n/, '').gsub(/\n\n/, "\n")
- end
-
- def encode_values
- if values.size == 1 && !as_list
- encode_value(values.first)
- else
- values.map {|v| encode_value(v) }
- end
- end
-
- def encode_value(value)
- case value
- when /^-?\d+/; value.to_i
- when "true"; true
- when "false"; false
- else value
- end
- end
-
- def optparse(*args)
- list = false
- self.as_list = false
- self.append = false
- opts = OptionParser.new
- opts.banner = "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
-
- common_options(opts)
- parse_options(opts, args)
- args = [] if list
- self.key = args.shift.to_sym if args.size >= 1
- self.values = args if args.size >= 1
- args
- end
- end
- end
-end
+# frozen_string_literal: true
+module YARD
+ module CLI
+ # CLI command to view or edit configuration options
+ # @since 0.6.2
+ class Config < Command
+ # @return [Symbol, nil] the key to view/edit, if any
+ attr_accessor :key
+
+ # @return [Array, nil] the list of values to set (or single value), if modifying
+ attr_accessor :values
+
+ # @return [Boolean] whether to reset the {#key}
+ attr_accessor :reset
+
+ # @return [Boolean] whether the value being set should be inside a list
+ attr_accessor :as_list
+
+ # @return [Boolean] whether to append values to existing key
+ attr_accessor :append
+
+ # @return [String, nil] command to use when configuring ~/.gemrc file.
+ # If the string is nil, configuration should not occur.
+ attr_accessor :gem_install_cmd
+
+ def initialize
+ super
+ self.key = nil
+ self.values = []
+ self.reset = false
+ self.append = false
+ self.as_list = false
+ self.gem_install_cmd = nil
+ end
+
+ def description
+ 'Views or edits current global configuration'
+ end
+
+ 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
+
+ private
+
+ 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
+
+ def modify_item
+ if reset
+ log.debug "Resetting #{key}"
+ YARD::Config.options[key] = YARD::Config::DEFAULT_CONFIG_OPTIONS[key]
+ else
+ log.debug "Setting #{key} to #{values.inspect}"
+ items = encode_values
+ current_items = YARD::Config.options[key]
+ items = [current_items].flatten + [items].flatten if append
+ YARD::Config.options[key] = items
+ end
+ YARD::Config.save
+ end
+
+ def view_item
+ log.debug "Viewing #{key}"
+ log.puts YARD::Config.options[key].inspect
+ end
+
+ def list_configuration
+ log.debug "Listing configuration"
+ require 'yaml'
+ log.puts YAML.dump(YARD::Config.options).sub(/\A--.*\n/, '').gsub(/\n\n/, "\n")
+ end
+
+ def encode_values
+ if values.size == 1 && !as_list
+ encode_value(values.first)
+ else
+ values.map {|v| encode_value(v) }
+ end
+ end
+
+ def encode_value(value)
+ case value
+ when /^-?\d+/; value.to_i
+ when "true"; true
+ when "false"; false
+ else value
+ end
+ end
+
+ def optparse(*args)
+ list = false
+ self.as_list = false
+ self.append = false
+ opts = OptionParser.new
+ opts.banner = "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
+
+ common_options(opts)
+ parse_options(opts, args)
+ args = [] if list
+ self.key = args.shift.to_sym if args.size >= 1
+ self.values = args if args.size >= 1
+ args
+ end
+ end
+ end
+end