# File lib/main/program/class_methods.rb, line 316
      def config(*args, &block)
        unless defined?(@config)
          require 'yaml' unless defined?(YAML)
          if test(?s, config_path)
            @config = Map.for(YAML.load(IO.read(config_path)))
          else
            config = args.last
            lines =
              case config
                when Hash
                  config.to_yaml.split(/\n/)
                when String
                  Util.unindent(config).split(/\n/)
                else
                  []
              end
            dash = lines.shift if lines.first.to_s =~ /^---/
            require 'fileutils' unless defined?(FileUtils)
            FileUtils.mkdir_p(File.dirname(config_path))
            open(config_path, 'w') do |fd|
              fd.puts "## file: #{ config_path }"
              fd.puts "#"
              fd.puts
              fd.puts lines
            end
            editor = ENV['EDITOR'] || ENV['EDIT'] || 'vi'
            system("#{ editor.inspect } #{ config_path }")
            @config = Map.for(YAML.load(IO.read(config_path)))
          end
        end
        @config
      end