36 lines
665 B
Crystal
36 lines
665 B
Crystal
require "specparser"
|
|
|
|
require "./exception.cr"
|
|
|
|
class Package::Package
|
|
def initialize(section : SpecParser::Section)
|
|
@file_name, @name, @version, release, @slot = section.options[0].split " "
|
|
@release = release.to_i
|
|
|
|
section.content.each do |key, value|
|
|
case key
|
|
when "dependencies"
|
|
@dependencies = value.as_a_or_s
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
class Package::Repository < Array(Package::Package)
|
|
getter url : String
|
|
|
|
def initialize(index_body : String, @url)
|
|
initialize
|
|
|
|
specs = SpecParser.parse index_body
|
|
|
|
specs.sections.each do |section|
|
|
case section.name
|
|
when "package"
|
|
self << ::Package::Package.new section
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|