config_file.rb

来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· RB 代码 · 共 100 行

RB
100
字号
#!/usr/bin/env ruby#--# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.# All rights reserved.# See LICENSE.txt for permissions.#++require 'yaml'module Gem  ####################################################################  # Store the gem command options specified in the configuration file.  # The config file object acts much like a hash.  #  class ConfigFile    # True if the backtrace option has been specified.    attr_reader :backtrace        # List of arguments supplied to the config file object.    attr_reader :args    # Verbose level of output:    # * false -- No output    # * true -- Normal output    # * :loud -- Extra output    attr_accessor :verbose    # Create the config file object.  +args+ is the list of arguments    # from the command line.    #    # The following command line options are handled early here rather    # than later at the time most command options are processed.    #    # * --config-file and --config-file==NAME -- Obviously these need    #   to be handled by the ConfigFile object to ensure we get the    #   right config file.    #       # * --backtrace -- Backtrace needs to be turned on early so that    #   errors before normal option parsing can be properly handled.    #    # * --debug -- Enable Ruby level debug messages.  Handled early    #   for the same reason as --backtrace.    #    def initialize(arg_list)      @verbose = true      handle_arguments(arg_list)      begin        @hash = open(config_file_name) {|f| YAML.load(f) }      rescue ArgumentError        warn "Failed to load #{config_file_name}"      rescue Errno::ENOENT        # Ignore missing config file error.      rescue Errno::EACCES                         warn "Failed to load #{config_file_name} due to permissions problem."      end      @hash ||= {}    end    # The name of the configuration file.    def config_file_name      @config_file_name || Gem.config_file    end    # Return the configuration information for +key+.    def [](key)      @hash[key.to_s]    end    private    # Handle the command arguments.    def handle_arguments(arg_list)      need_cfg_name = false      @args = []      arg_list.each do |arg|	if need_cfg_name	  @config_file_name = arg	  need_cfg_name = false	else	  case arg	  when /^--(traceback|backtrace)$/	    @backtrace = true          when /^--debug$/            $DEBUG = true	  when /^--config-file$/	    need_cfg_name = true	  when /^--config-file=(.+)$/	    @config_file_name = $1	  else	    @args << arg	  end	end      end    end  endend

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?