reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 85b3a3babb9df08f31d79c5539321e331b96fed4
parent 821ddf8f7db17e12f6d139a9617c3cc389729f2a
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Tue,  1 Dec 2015 23:10:30 -0500

fix package downloading

Diffstat:
Msrc/database.cpp | 2+-
Msrc/database.hpp | 2+-
Msrc/package.cpp | 4++--
Msrc/package.hpp | 7++++---
Msrc/reapack.cpp | 4++--
Mtest/database.cpp | 10+++++-----
Mtest/package.cpp | 4++--
7 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/database.cpp b/src/database.cpp @@ -56,6 +56,6 @@ void Category::addPackage(PackagePtr pack) else if(pack->versions().empty()) return; - pack->setCategory(this); + pack->setCategory(shared_from_this()); m_packages.push_back(pack); } diff --git a/src/database.hpp b/src/database.hpp @@ -32,7 +32,7 @@ private: std::vector<PackagePtr> m_packages; }; -class Category { +class Category : public std::enable_shared_from_this<Category> { public: Category(const std::string &name); diff --git a/src/package.cpp b/src/package.cpp @@ -58,10 +58,10 @@ Path Package::scriptLocation() const path.append("Scripts"); path.append("ReaScripts"); - if(m_category) + if(category()) path.append(category()->name()); - path.append(m_name); + path.append(name()); return path; } diff --git a/src/package.hpp b/src/package.hpp @@ -8,6 +8,7 @@ class Package; typedef std::shared_ptr<Package> PackagePtr; class Category; +typedef std::shared_ptr<Category> CategoryPtr; class Package { public: @@ -20,8 +21,8 @@ public: Package(const Type, const std::string &name); - void setCategory(Category *cat) { m_category = cat; } - Category *category() const { return m_category; } + void setCategory(CategoryPtr cat) { m_category = cat; } + CategoryPtr category() const { return m_category; } Type type() const { return m_type; } const std::string &name() const { return m_name; } @@ -36,7 +37,7 @@ public: private: Path scriptLocation() const; - Category *m_category; + CategoryPtr m_category; Type m_type; std::string m_name; VersionSet m_versions; diff --git a/src/reapack.cpp b/src/reapack.cpp @@ -103,14 +103,14 @@ void ReaPack::synchronize(DatabasePtr database) installPackage(pkg); } catch(const reapack_error &e) { - ShowMessageBox(e.what(), "Package Error", 0); + ShowMessageBox(e.what(), pkg->name().c_str(), 0); } } } void ReaPack::installPackage(PackagePtr pkg) { - const char *url = pkg->lastVersion()->source(0)->url().c_str(); + const std::string &url = pkg->lastVersion()->source(0)->url(); m_downloadQueue.push(url, [=](const int code, const string &data) { if(code != 200) { diff --git a/test/database.cpp b/test/database.cpp @@ -93,14 +93,14 @@ TEST_CASE("add a package", M) { PackagePtr pack = make_shared<Package>(Package::ScriptType, "name"); pack->addVersion(ver); - Category cat("a"); - CHECK(cat.packages().size() == 0); + CategoryPtr cat = make_shared<Category>("a"); + CHECK(cat->packages().size() == 0); CHECK_FALSE(pack->category()); - cat.addPackage(pack); + cat->addPackage(pack); - REQUIRE(cat.packages().size() == 1); - REQUIRE(pack->category() == &cat); + REQUIRE(cat->packages().size() == 1); + REQUIRE(pack->category().get() == cat.get()); } TEST_CASE("drop empty package", M) { diff --git a/test/package.cpp b/test/package.cpp @@ -65,10 +65,10 @@ TEST_CASE("unknown target location", M) { } TEST_CASE("script target location", M) { - Category cat("Category Name"); + CategoryPtr cat = make_shared<Category>("Category Name"); Package pack(Package::ScriptType, "file.name"); - pack.setCategory(&cat); + pack.setCategory(cat); const Path path = pack.targetLocation();