diff --git a/source/dub/dub.d b/source/dub/dub.d index 123bf69..e9b7718 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -260,8 +260,7 @@ { init(NativePath()); m_overrideSearchPath = override_path; - m_packageManager = new PackageManager(NativePath(), NativePath(), NativePath(), false); - updatePackageSearchPath(); + m_packageManager = new PackageManager(override_path); } private void init(NativePath root_path) @@ -445,9 +444,7 @@ loadSingleFilePackage(NativePath(path)); } - /** Disables the default search paths and only searches a specific directory - for packages. - */ + deprecated("Instantiate a Dub instance with the single-argument constructor: `new Dub(path)`") void overrideSearchPath(NativePath path) { if (!path.absolute) path = NativePath(getcwd()) ~ path; @@ -1350,19 +1347,21 @@ private void updatePackageSearchPath() { + // TODO: Remove once `overrideSearchPath` is removed if (!m_overrideSearchPath.empty) { - m_packageManager.disableDefaultSearchPaths = true; + m_packageManager._disableDefaultSearchPaths = true; m_packageManager.searchPath = [m_overrideSearchPath]; - } else { - auto p = environment.get("DUBPATH"); - NativePath[] paths; - - version(Windows) enum pathsep = ";"; - else enum pathsep = ":"; - if (p.length) paths ~= p.split(pathsep).map!(p => NativePath(p))().array(); - m_packageManager.disableDefaultSearchPaths = false; - m_packageManager.searchPath = paths; + return; } + + auto p = environment.get("DUBPATH"); + NativePath[] paths; + + version(Windows) enum pathsep = ";"; + else enum pathsep = ":"; + if (p.length) paths ~= p.split(pathsep).map!(p => NativePath(p))().array(); + m_packageManager._disableDefaultSearchPaths = false; + m_packageManager.searchPath = paths; } private void determineDefaultCompiler() diff --git a/source/dub/packagemanager.d b/source/dub/packagemanager.d index ae03dbf..045580e 100644 --- a/source/dub/packagemanager.d +++ b/source/dub/packagemanager.d @@ -37,6 +37,24 @@ bool m_disableDefaultSearchPaths = false; } + /** + Instantiate an instance with a single search path + + This constructor is used when dub is invoked with the '--bar' CLI switch. + The instance will not look up the default repositories + (e.g. ~/.dub/packages), using only `path` instead. + + Params: + path = Path of the single repository + */ + this(NativePath path) + { + this.m_searchPath = [ path ]; + this.m_disableDefaultSearchPaths = true; + this.refresh(true); + } + + deprecated("Use the overload which accepts 3 `NativePath` arguments") this(NativePath user_path, NativePath system_path, bool refresh_packages = true) { m_repositories = [ @@ -69,8 +87,18 @@ /** Disables searching DUB's predefined search paths. */ + deprecated("Instantiate a PackageManager instance with the single-argument constructor: `new PackageManager(path)`") @property void disableDefaultSearchPaths(bool val) { + this._disableDefaultSearchPaths(val); + } + + // Non deprecated instance of the previous symbol, + // as `Dub.updatePackageSearchPath` calls it and while nothing in Dub app + // itself relies on it, just removing the call from `updatePackageSearchPath` + // could break the library use case. + package(dub) void _disableDefaultSearchPaths(bool val) + { if (val == m_disableDefaultSearchPaths) return; m_disableDefaultSearchPaths = val; refresh(true); @@ -571,7 +599,7 @@ NativePath list_path = m_repositories[type].packagePath; Package[] packs; NativePath[] paths; - if (!m_disableDefaultSearchPaths) try { + try { auto local_package_file = list_path ~ LocalPackagesFilename; logDiagnostic("Looking for local package map at %s", local_package_file.toNativeString()); if( !existsFile(local_package_file) ) return; @@ -624,9 +652,12 @@ m_repositories[type].localPackages = packs; m_repositories[type].searchPath = paths; } - scanLocalPackages(LocalPackageType.system); - scanLocalPackages(LocalPackageType.user); - scanLocalPackages(LocalPackageType.package_); + if (!m_disableDefaultSearchPaths) + { + scanLocalPackages(LocalPackageType.system); + scanLocalPackages(LocalPackageType.user); + scanLocalPackages(LocalPackageType.package_); + } auto old_packages = m_packages; @@ -693,9 +724,12 @@ } } } - loadOverrides(LocalPackageType.package_); - loadOverrides(LocalPackageType.user); - loadOverrides(LocalPackageType.system); + if (!m_disableDefaultSearchPaths) + { + loadOverrides(LocalPackageType.package_); + loadOverrides(LocalPackageType.user); + loadOverrides(LocalPackageType.system); + } } alias Hash = ubyte[];