summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2023-05-23 20:36:19 +0200
committerEugen Wissner <belka@caraus.de>2023-05-23 20:36:19 +0200
commit341eafcbf2866b555a6adbf957a516d6b2d16e66 (patch)
tree0533768fa18c8730036663a9827655d80a5c3f16 /lib
parentf564676cb6576dd8e980770b0ffa3311a060e348 (diff)
downloadslackbuilder-341eafcbf2866b555a6adbf957a516d6b2d16e66.tar.gz
Parse package from the info file
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