module ActiveLdap::Command

def parse_options(argv=nil, version=nil)

def parse_options(argv=nil, version=nil)
  argv ||= ARGV.dup
  options = OpenStruct.new
  opts = OptionParser.new do |opts|
    yield(opts, options)
    opts.separator ""
    opts.separator _("Common options:")
    opts.on_tail("--config=CONFIG",
                 _("Specify configuration file written as YAML")) do |file|
      require 'yaml'
      config = YAML.load(File.read(file)).symbolize_keys
      config = Base.prepare_configuration(config)
      Configuration::DEFAULT_CONFIG.update(config)
    end
    opts.on_tail("-h", "--help", _("Show this message")) do
      puts opts
      exit
    end
    opts.on_tail("--version", _("Show version")) do
      puts(version || VERSION)
      exit
    end
  end
  opts.parse!(argv)
  [argv, opts, options]
end

def read_password(prompt, input=$stdin, output=$stdout)

def read_password(prompt, input=$stdin, output=$stdout)
  output.print(prompt)
  system("/bin/stty -echo") if input.tty?
  input.gets.chomp
ensure
  system("/bin/stty echo") if input.tty?
  output.puts
end