From 6aa9bd0f77dcb5128167fae62e32aa5252fe85c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Mon, 2 Dec 2013 00:55:24 +0100 Subject: Renew the updater branch Now with some actual consensus on what the updater will do! --- mmc_updater/src/UpdateScript.h | 86 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 mmc_updater/src/UpdateScript.h (limited to 'mmc_updater/src/UpdateScript.h') diff --git a/mmc_updater/src/UpdateScript.h b/mmc_updater/src/UpdateScript.h new file mode 100644 index 00000000..fec463f3 --- /dev/null +++ b/mmc_updater/src/UpdateScript.h @@ -0,0 +1,86 @@ +#pragma once + +#include +#include + +class TiXmlElement; + +/** Represents a package containing one or more + * files for an update. + */ +class UpdateScriptPackage +{ + public: + UpdateScriptPackage() + : size(0) + {} + + std::string name; + std::string sha1; + std::string source; + int size; + + bool operator==(const UpdateScriptPackage& other) const + { + return name == other.name && + sha1 == other.sha1 && + source == other.source && + size == other.size; + } +}; + +/** Represents a file to be installed as part of an update. */ +class UpdateScriptFile +{ + public: + UpdateScriptFile() + : permissions(0) + , isMainBinary(false) + {} + + std::string path; + std::string linkTarget; + + /** The permissions for this file, specified + * using the standard Unix mode_t values. + */ + int permissions; + + bool isMainBinary; + + bool operator==(const UpdateScriptFile& other) const + { + return path == other.path && + permissions == other.permissions && + linkTarget == other.linkTarget && + isMainBinary == other.isMainBinary; + } +}; + +/** Stores information about the packages and files included + * in an update, parsed from an XML file. + */ +class UpdateScript +{ + public: + UpdateScript(); + + /** Initialize this UpdateScript with the script stored + * in the XML file at @p path. + */ + void parse(const std::string& path); + + bool isValid() const; + const std::string path() const; + const std::vector& filesToInstall() const; + const std::vector& filesToUninstall() const; + + private: + void parseUpdate(const TiXmlElement* element); + UpdateScriptFile parseFile(const TiXmlElement* element); + + std::string m_path; + std::vector m_filesToInstall; + std::vector m_filesToUninstall; +}; + -- cgit v1.2.3 From e90f1a27569ac6b9e9782646c9de92fc9534b1d2 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 5 Dec 2013 20:32:12 -0600 Subject: Implement update installer --- mmc_updater/src/UpdateScript.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'mmc_updater/src/UpdateScript.h') diff --git a/mmc_updater/src/UpdateScript.h b/mmc_updater/src/UpdateScript.h index fec463f3..c825e35d 100644 --- a/mmc_updater/src/UpdateScript.h +++ b/mmc_updater/src/UpdateScript.h @@ -35,10 +35,12 @@ class UpdateScriptFile public: UpdateScriptFile() : permissions(0) - , isMainBinary(false) {} - std::string path; + /// Path to copy from. + std::string source; + /// The path to copy to. + std::string dest; std::string linkTarget; /** The permissions for this file, specified @@ -46,14 +48,11 @@ class UpdateScriptFile */ int permissions; - bool isMainBinary; - bool operator==(const UpdateScriptFile& other) const { - return path == other.path && - permissions == other.permissions && - linkTarget == other.linkTarget && - isMainBinary == other.isMainBinary; + return source == other.source && + dest == other.dest && + permissions == other.permissions; } }; -- cgit v1.2.3