summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/package.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/package.rb b/lib/package.rb
index 39a36c6..fbfd444 100644
--- a/lib/package.rb
+++ b/lib/package.rb
@@ -21,6 +21,32 @@ class Package
def name_version
"#{name}-#{@version}"
end
+
+ def self.parse(path, info_contents)
+ current_line = String.new ''
+ variables = {}
+
+ info_contents.each_line(chomp: true) do |file_line|
+ current_line << file_line.delete_suffix('\\')
+ next if file_line.end_with? '\\'
+
+ variables.store(*parse_pair(current_line))
+ current_line.clear
+ end
+ from_hash path, variables
+ end
+
+ private_class_method def self.parse_pair(current_line)
+ variable_name, variable_value = current_line.split '='
+ [variable_name, variable_value[1...-1].split]
+ end
+
+ private_class_method def self.from_hash(path, variables)
+ Package.new path,
+ version: variables['VERSION'].join,
+ homepage: variables['HOMEPAGE'].join,
+ requires: variables['REQUIRES']
+ end
end
class Download