def add_group(group) puts "INSERT INTO groups (gid, name) VALUES ('#{group.gidNumber}', '#{group.cn}');" group.memberUids.each do |uid| puts "INSERT INTO group_membership (gid, uid) VALUES ('#{group.gidNumber}', (SELECT uid FROM passwd_names WHERE login = '#{uid}'));" end end class Group attr_accessor :gidNumber, :memberUid, :cn attr_reader :memberUids def initialize @memberUids = [] end def memberUid=(v) memberUids << v end def memberUid memberUids.first end end group = Group.new ARGF.each_line do |l| if l[0] == ?# next end case l when /^$/ add_group(group) group = Group.new when /(.*):: (.*)/ begin group.send($1 + '=', $2.unpack("m")[0]) rescue NoMethodError STDERR.puts("No attribute #{$1}") end when /(.*): (.*)/ begin group.send($1 + '=', $2) rescue NoMethodError STDERR.puts("No attribute #{$1}") end end end