package/src/package/package.cr

50 lines
887 B
Crystal

require "specparser"
require "./exception.cr"
class Package::Package
getter name : String
getter version : String
getter release : Int32
getter slot : String
getter dependencies = Array(String).new
getter file_path : String
def initialize(@file_path)
specs = SpecParser.parse File.read file_path
name : String? = nil
version : String? = nil
release : Int32? = nil
slot : String? = nil
specs.assignments.each do |key, value|
case key
when "name"
name = value.as_s
when "version"
version = value.as_s
when "release"
release = value.as_s.to_i
when "slot"
slot = value.as_s
when "dependencies"
@dependencies = value.as_a_or_s
end
end
@name = name.not_nil!
@version = version.not_nil!
@release = release.not_nil!
@slot = slot.not_nil!
end
def to_atom
Atom.new @name, slot: @slot
end
end