#! /usr/bin/ruby
# Usage: rip-installed NAME
#
# Prints all installed packages or, if NAME is given, exits 0
# if NAME is installed and 1 if not.

require 'rip/script'

name = ARGV[0]

require 'set'
installed = Set.new

%w( lib bin man ).each do |type|
  Dir["#{Rip.envdir}/#{type}/**/*"].each do |file|
    if File.symlink?(file)
      begin
        realpath = Pathname.new(File.readlink(file)).realpath.to_s
        package = realpath[/^(#{Rip.packages}\/[^\/]+)/, 1]
        installed << package if package
      rescue Errno::ENOENT
      end
    end
  end
end

if name
  installed_package = installed.detect do |package|
    metadata(package).name == name
  end

  if installed_package
    puts installed_package
  else
    exit 1
  end
elsif installed.any?
  puts installed.to_a.sort
end
