#!/usr/local/bin/ruby
# -*- ruby -*-

while line = gets
  fields = []

#  line.sub!(/^"/, '')
#  line.sub!(/"$/, '')

  pkgname, curdir, prefix,
    comment_file, descr_file, maintainer, categories,
    fetch_depends, build_depends, lib_depends,
    run_depends, depends = line.chomp.split('|', -1)

  if depends.nil?
    STDERR.printf "%s: malformed entry: %s", pkgname || '?', line
    next
  end

  fields.push(pkgname, curdir, prefix)

  comment = nil

  begin
    File.open(comment_file) do |f|
      fields.push(f.readline.strip)
    end
  rescue
    fields.push('** No Description')
  end

  if File.file?(descr_file)
    fields.push(descr_file)
  else
    fields.push('/dev/null')
  end

  fields.push(maintainer, categories)

  bdirs = [fetch_depends, build_depends].join(' ').split.map { |i|
    i.split(':')[1]
  }
  rdirs = run_depends.split.map { |i|
    i.split(':')[1]
  }
  mdirs = depends.split.map { |i|
    i.split(':')[0]
  } + lib_depends.split.map { |i|
    i.split(':')[1]
  }
  [bdirs, rdirs, mdirs].each do |dirs|
    dirs.reject! { |d|
      if d && File.directory?(d)
	false
      else
	STDERR.printf "%s:\"%s\" non-existent -- dependency list incomplete\n", pkgname, d
	true
      end
    }
  end

  fields.push((bdirs | mdirs).sort.join(' '))
  fields.push((rdirs | mdirs).sort.join(' '))

  www = ''

  File.open(descr_file) do |f|
    f.each do |line|
      if /^WWW:\s+(\S+)/ =~ line
	www = $1
	break
      end
    end
  end rescue nil

  fields.push(www)

  puts fields.join('|')
end

exit 0
