summaryrefslogtreecommitdiffstats
path: root/mmc_updater/src/UpdateScript.h
diff options
context:
space:
mode:
Diffstat (limited to 'mmc_updater/src/UpdateScript.h')
-rw-r--r--mmc_updater/src/UpdateScript.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/mmc_updater/src/UpdateScript.h b/mmc_updater/src/UpdateScript.h
new file mode 100644
index 00000000..c825e35d
--- /dev/null
+++ b/mmc_updater/src/UpdateScript.h
@@ -0,0 +1,85 @@
+#pragma once
+
+#include <string>
+#include <vector>
+
+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)
+ {}
+
+ /// Path to copy from.
+ std::string source;
+ /// The path to copy to.
+ std::string dest;
+ std::string linkTarget;
+
+ /** The permissions for this file, specified
+ * using the standard Unix mode_t values.
+ */
+ int permissions;
+
+ bool operator==(const UpdateScriptFile& other) const
+ {
+ return source == other.source &&
+ dest == other.dest &&
+ permissions == other.permissions;
+ }
+};
+
+/** 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<UpdateScriptFile>& filesToInstall() const;
+ const std::vector<std::string>& filesToUninstall() const;
+
+ private:
+ void parseUpdate(const TiXmlElement* element);
+ UpdateScriptFile parseFile(const TiXmlElement* element);
+
+ std::string m_path;
+ std::vector<UpdateScriptFile> m_filesToInstall;
+ std::vector<std::string> m_filesToUninstall;
+};
+