module Windows::User

def user_absent(name, &block)

def user_absent(name, &block)
  execute("net user /delete \"#{name}\"", {:acceptable_exit_codes => [0,2]}, &block)
end

def user_get(name, &block)

def user_get(name, &block)
  execute("net user \"#{name}\"") do |result|
    fail_test "failed to get user #{name}" unless result.stdout =~ /^User name\s+#{name}/
    yield result if block_given?
  end
end

def user_list(&block)

def user_list(&block)
  execute('cmd /c echo "" | wmic useraccount where localaccount="true" get name /format:value') do |result|
    users = []
    result.stdout.each_line do |line|
      users << (line.match(/^Name=([\w ]+)/) or next)[1]
    end
    yield result if block_given?
    users
  end
end

def user_present(name, &block)

def user_present(name, &block)
  execute("net user /add \"#{name}\"", {:acceptable_exit_codes => [0,2]}, &block)
end