package/src/package.cr

42 lines
758 B
Crystal

require "option_parser"
require "./package/*"
root : String? = nil
args = [] of String
OptionParser.parse do |parser|
parser.banner = "usage: package [options] <command> [arguments]"
parser.unknown_args do |unknown_args|
args = unknown_args
end
end
context = Package::Context.new
context.root = root unless root.nil?
command = args[0]
args.shift
begin
case command
when "add"
context.install args.map { |s| Package::Atom.from_string s }
when "remove"
context.remove args.map { |s| Package::Atom.from_string s }
when "update"
context.update_repository_cache
end
rescue e : Package::CollisionException
context.error e
e.collisions.each do |file|
context.error " - #{file}"
end
rescue e : Package::Exception
context.error e
end