diff --git a/source/dub/packagemanager.d b/source/dub/packagemanager.d index bd618cf..9c5067a 100644 --- a/source/dub/packagemanager.d +++ b/source/dub/packagemanager.d @@ -482,27 +482,27 @@ void addOverride(PlacementLocation scope_, string package_, Dependency version_spec, Version target) { m_repositories[scope_].overrides ~= PackageOverride(package_, version_spec, target); - writeLocalPackageOverridesFile(scope_); + m_repositories[scope_].writeOverrides(); } /// ditto deprecated("Use the overload that accepts a `VersionRange` as 3rd argument") void addOverride(PlacementLocation scope_, string package_, Dependency version_spec, NativePath target) { m_repositories[scope_].overrides ~= PackageOverride(package_, version_spec, target); - writeLocalPackageOverridesFile(scope_); + m_repositories[scope_].writeOverrides(); } /// Ditto void addOverride(PlacementLocation scope_, string package_, VersionRange source, Version target) { m_repositories[scope_].overrides ~= PackageOverride(package_, source, target); - writeLocalPackageOverridesFile(scope_); + m_repositories[scope_].writeOverrides(); } /// ditto void addOverride(PlacementLocation scope_, string package_, VersionRange source, NativePath target) { m_repositories[scope_].overrides ~= PackageOverride(package_, source, target); - writeLocalPackageOverridesFile(scope_); + m_repositories[scope_].writeOverrides(); } /** Removes an existing package override. @@ -523,7 +523,7 @@ if (ovr.package_ != package_ || ovr.source != src) continue; rep.overrides = rep.overrides[0 .. i] ~ rep.overrides[i+1 .. $]; - writeLocalPackageOverridesFile(scope_); + (*rep).writeOverrides(); return; } throw new Exception(format("No override exists for %s %s", package_, src)); @@ -683,7 +683,7 @@ addPackages(*packs, pack); - writeLocalPackageList(type); + this.m_repositories[type].writeLocalPackageList(); logInfo("Registered package: %s (version: %s)", pack.name, pack.version_); return pack; @@ -706,7 +706,7 @@ *packs = (*packs)[0 .. i] ~ (*packs)[i+1 .. $]; } - writeLocalPackageList(type); + this.m_repositories[type].writeLocalPackageList(); foreach(ver, name; removed) logInfo("Deregistered package: %s (version: %s)", name, ver); @@ -716,14 +716,14 @@ void addSearchPath(NativePath path, PlacementLocation type) { m_repositories[type].searchPath ~= path; - writeLocalPackageList(type); + this.m_repositories[type].writeLocalPackageList(); } /// Removes a search path from the given type. void removeSearchPath(NativePath path, PlacementLocation type) { m_repositories[type].searchPath = m_repositories[type].searchPath.filter!(p => p != path)().array(); - writeLocalPackageList(type); + this.m_repositories[type].writeLocalPackageList(); } void refresh(bool refresh_existing_packages) @@ -827,48 +827,6 @@ return hash[].dup; } - private void writeLocalPackageList(PlacementLocation type) - { - Json[] newlist; - foreach (p; m_repositories[type].searchPath) { - auto entry = Json.emptyObject; - entry["name"] = "*"; - entry["path"] = p.toNativeString(); - newlist ~= entry; - } - - foreach (p; m_repositories[type].localPackages) { - if (p.parentPackage) continue; // do not store sub packages - auto entry = Json.emptyObject; - entry["name"] = p.name; - entry["version"] = p.version_.toString(); - entry["path"] = p.path.toNativeString(); - newlist ~= entry; - } - - NativePath path = m_repositories[type].packagePath; - if( !existsDirectory(path) ) mkdirRecurse(path.toNativeString()); - writeJsonFile(path ~ LocalPackagesFilename, Json(newlist)); - } - - private void writeLocalPackageOverridesFile(PlacementLocation type) - { - Json[] newlist; - foreach (ovr; m_repositories[type].overrides) { - auto jovr = Json.emptyObject; - jovr["name"] = ovr.package_; - jovr["version"] = ovr.source.toString(); - ovr.target.match!( - (NativePath path) { jovr["targetPath"] = path.toNativeString(); }, - (Version vers) { jovr["targetVersion"] = vers.toString(); }, - ); - newlist ~= jovr; - } - auto path = m_repositories[type].packagePath; - if (!existsDirectory(path)) mkdirRecurse(path.toNativeString()); - writeJsonFile(path ~ LocalOverridesFilename, Json(newlist)); - } - /// Adds the package and scans for subpackages. private void addPackages(ref Package[] dst_repos, Package pack) const { @@ -1033,6 +991,48 @@ } } + private void writeOverrides() + { + Json[] newlist; + foreach (ovr; this.overrides) { + auto jovr = Json.emptyObject; + jovr["name"] = ovr.package_; + jovr["version"] = ovr.source.toString(); + ovr.target.match!( + (NativePath path) { jovr["targetPath"] = path.toNativeString(); }, + (Version vers) { jovr["targetVersion"] = vers.toString(); }, + ); + newlist ~= jovr; + } + auto path = this.packagePath; + if (!existsDirectory(path)) mkdirRecurse(path.toNativeString()); + writeJsonFile(path ~ LocalOverridesFilename, Json(newlist)); + } + + private void writeLocalPackageList() + { + Json[] newlist; + foreach (p; this.searchPath) { + auto entry = Json.emptyObject; + entry["name"] = "*"; + entry["path"] = p.toNativeString(); + newlist ~= entry; + } + + foreach (p; this.localPackages) { + if (p.parentPackage) continue; // do not store sub packages + auto entry = Json.emptyObject; + entry["name"] = p.name; + entry["version"] = p.version_.toString(); + entry["path"] = p.path.toNativeString(); + newlist ~= entry; + } + + NativePath path = this.packagePath; + if( !existsDirectory(path) ) mkdirRecurse(path.toNativeString()); + writeJsonFile(path ~ LocalPackagesFilename, Json(newlist)); + } + // load locally defined packages void scanLocalPackages(bool refresh_existing_packages, PackageManager manager) {