mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2026-09-19 14:53:49 +00:00
96 lines
2.3 KiB
Ruby
96 lines
2.3 KiB
Ruby
module W3DHubLauncher
|
|
class Worker
|
|
class Api
|
|
class LegacyManifest
|
|
attr_reader :game, :type, :version, :base_version, :files, :dependencies
|
|
|
|
def initialize(file_path)
|
|
@document = REXML::Document.new(File.read(file_path))
|
|
root = @document.root
|
|
|
|
@game = root["game"]
|
|
@type = root["type"]
|
|
@version = root["version"] ? Gem::Version.new(root["version"]) : nil
|
|
@base_version = root["baseVersion"] ? Gem::Version.new(root["baseVersion"]) : nil
|
|
|
|
@files = []
|
|
@dependencies = []
|
|
|
|
parse_files
|
|
parse_dependencies
|
|
end
|
|
|
|
def patch?
|
|
@type == "Patch"
|
|
end
|
|
|
|
def full?
|
|
@type == "Full"
|
|
end
|
|
|
|
def parse_files
|
|
@document.root.elements.each("//File") do |element|
|
|
@files.push(ManifestFile.new(element, @version))
|
|
end
|
|
end
|
|
|
|
def parse_dependencies
|
|
@document.root.elements.each("//Dependency") do |element|
|
|
@dependencies.push(Dependency.new(element))
|
|
end
|
|
end
|
|
|
|
class ManifestFile
|
|
attr_reader :name, :checksum, :package, :patch_package, :removed_since, :from, :version
|
|
|
|
def initialize(xml, version)
|
|
@data = xml
|
|
|
|
@name = @data["name"]
|
|
@checksum = @data["checksum"]
|
|
@package = @data["package"]
|
|
@removed_since = @data["removedsince"] ? Gem::Version.new(@data["removedsince"]) : nil
|
|
|
|
xml.elements.each("Patch") do |patch|
|
|
@patch = true
|
|
|
|
@from = patch["from"]
|
|
|
|
if @package.to_s.empty?
|
|
@package = patch["package"]
|
|
else
|
|
@patch_package = patch["package"]
|
|
end
|
|
end
|
|
|
|
@version = version ? Gem::Version.new(version) : nil
|
|
end
|
|
|
|
def removed?
|
|
@removed_since
|
|
end
|
|
|
|
def patch?
|
|
@patch
|
|
end
|
|
|
|
def full_and_patch?
|
|
@package && @patch_package
|
|
end
|
|
end
|
|
|
|
class Dependency
|
|
attr_reader :name, :removed_since
|
|
|
|
def initialize(xml)
|
|
@data = xml
|
|
|
|
@name = @data["name"]
|
|
@removed_since = @data["removed_since"]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|