summaryrefslogtreecommitdiffstats
path: root/mmc_updater/src/UpdateScript.h
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-12-09 12:04:05 -0600
committerAndrew <forkk@forkk.net>2013-12-09 12:04:05 -0600
commit7f52bed9e3f559adcbcf3f3c1c7ac2251964db8c (patch)
tree52097b57dc7d18ec4e35ef3a8e554af2d91545e8 /mmc_updater/src/UpdateScript.h
parent9410dd042ea62224fa3e0eb3b525abbdf0c316ee (diff)
parent220e07aef4a34dca9f31ae0c5bb994e5c594125d (diff)
downloadMultiMC-7f52bed9e3f559adcbcf3f3c1c7ac2251964db8c.tar
MultiMC-7f52bed9e3f559adcbcf3f3c1c7ac2251964db8c.tar.gz
MultiMC-7f52bed9e3f559adcbcf3f3c1c7ac2251964db8c.tar.lz
MultiMC-7f52bed9e3f559adcbcf3f3c1c7ac2251964db8c.tar.xz
MultiMC-7f52bed9e3f559adcbcf3f3c1c7ac2251964db8c.zip
Merge branch 'feature_updater' into develop
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;
+};
+