summaryrefslogtreecommitdiffstats
path: root/mmc_updater/src/MacBundle.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-12-02 00:55:24 +0100
committerPetr Mrázek <peterix@gmail.com>2013-12-02 00:55:24 +0100
commit6aa9bd0f77dcb5128167fae62e32aa5252fe85c6 (patch)
tree632994a61888929af9289927d338bd19a2b3f32c /mmc_updater/src/MacBundle.cpp
parent613699b3626aea750093ab7eaaeccaa28c0e87c6 (diff)
downloadMultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar.gz
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar.lz
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar.xz
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.zip
Renew the updater branch
Now with some actual consensus on what the updater will do!
Diffstat (limited to 'mmc_updater/src/MacBundle.cpp')
-rw-r--r--mmc_updater/src/MacBundle.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/mmc_updater/src/MacBundle.cpp b/mmc_updater/src/MacBundle.cpp
new file mode 100644
index 00000000..205869eb
--- /dev/null
+++ b/mmc_updater/src/MacBundle.cpp
@@ -0,0 +1,53 @@
+#include "MacBundle.h"
+
+#include "FileUtils.h"
+#include "Log.h"
+
+MacBundle::MacBundle(const std::string& path, const std::string& appName)
+: m_appName(appName)
+{
+ m_path = path + '/' + appName + ".app";
+}
+
+std::string MacBundle::bundlePath() const
+{
+ return m_path;
+}
+
+void MacBundle::create(const std::string& infoPlist,
+ const std::string& icon,
+ const std::string& exePath)
+{
+ try
+ {
+ // create the bundle directories
+ FileUtils::mkpath(m_path.c_str());
+
+ std::string contentDir = m_path + "/Contents";
+ std::string resourceDir = contentDir + "/Resources";
+ std::string binDir = contentDir + "/MacOS";
+
+ FileUtils::mkpath(resourceDir.c_str());
+ FileUtils::mkpath(binDir.c_str());
+
+ // create the Contents/Info.plist file
+ FileUtils::writeFile((contentDir + "/Info.plist").c_str(),infoPlist.c_str(),static_cast<int>(infoPlist.size()));
+
+ // save the icon to Contents/Resources/<appname>.icns
+ FileUtils::writeFile((resourceDir + '/' + m_appName + ".icns").c_str(),icon.c_str(),static_cast<int>(icon.size()));
+
+ // copy the app binary to Contents/MacOS/<appname>
+ m_exePath = binDir + '/' + m_appName;
+ FileUtils::copyFile(exePath.c_str(),m_exePath.c_str());
+ }
+ catch (const FileUtils::IOException& exception)
+ {
+ LOG(Error,"Unable to create app bundle. " + std::string(exception.what()));
+ }
+}
+
+std::string MacBundle::executablePath() const
+{
+ return m_exePath;
+}
+