From 341eafcbf2866b555a6adbf957a516d6b2d16e66 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 23 May 2023 20:36:19 +0200 Subject: [PATCH] Parse package from the info file --- lib/package.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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