Comparing version 1.0.1 to 1.0.2
{ | ||
"name": "depstr", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Bulk linking of packages and bulk updated for dependencies", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -54,20 +54,22 @@ import RainbowConfig from '@rainbow-industries/rainbow-config'; | ||
const dependenciesMap = new Map(); | ||
const dependenciesArray = []; | ||
if (this.config.get('dependencies')) { | ||
await this.resolveDependencies(this.config.get('dependencies'), this.packageJSON.dependencies || {}, dependenciesMap); | ||
const toBeInstalledDependencies = await this.resolveDependencies(this.config.get('dependencies'), this.packageJSON.dependencies || {}); | ||
dependenciesArray.push(...toBeInstalledDependencies); | ||
} | ||
if (this.config.get('dev-dependencies')) { | ||
await this.resolveDependencies(this.config.get('dev-dependencies'), this.packageJSON.devDependencies || {}, dependenciesMap); | ||
const toBeInstalledDependencies = await this.resolveDependencies(this.config.get('dev-dependencies'), this.packageJSON.devDependencies || {}); | ||
dependenciesArray.push(...toBeInstalledDependencies); | ||
} | ||
const packages = await this.resolvePackages(dependenciesMap); | ||
const localPackages = await this.collectLocalPackages(); | ||
for (const packageName of dependenciesMap.keys()) { | ||
if (!packages.has(packageName)) { | ||
for (const packageName of (new Set(dependenciesArray).keys())) { | ||
if (!localPackages.has(packageName)) { | ||
throw new Error(`Cannot link package ${packageName} from ${this.cwd}: Package not found in the ${path.join(this.cwd, '../')} directory!`); | ||
} | ||
await this.linkDependency(packages.get(packageName)); | ||
await this.linkDependency(localPackages.get(packageName)); | ||
@@ -78,3 +80,3 @@ if (!this.linkedDependencies.has(packageName)) { | ||
const linker = new Linker({ | ||
cwd: packages.get(packageName), | ||
cwd: localPackages.get(packageName), | ||
linkedDependencies: this.linkedDependencies, | ||
@@ -92,7 +94,7 @@ isDryRun: this.isDryRun, | ||
async resolvePackages(dependenciesMap) { | ||
const packages = await glob(path.join(this.cwd, '../'), '*/package.json'); | ||
async collectLocalPackages() { | ||
const localPackages = await glob(path.join(this.cwd, '../'), '*/package.json'); | ||
const packageMap = new Map(); | ||
for (const packageName of packages) { | ||
for (const packageName of localPackages) { | ||
const json = await this.loadPackageJSON(packageName); | ||
@@ -108,5 +110,13 @@ packageMap.set(json.name, path.dirname(packageName)); | ||
async resolveDependencies(dependencyList, packageDependencies, dependenciesMap) { | ||
/** | ||
* checks which dependencies should be linked | ||
* | ||
* @param {array} dependencyList lsit of to be linked dependencies form the depstr | ||
* config file | ||
* @param {object} packageDependencies all dependencies that are part of th | ||
* epackage.json file | ||
*/ | ||
async resolveDependencies(dependencyList, packageDependencies) { | ||
const packageDependenciesSet = new Set(Object.keys(packageDependencies)); | ||
const toBeInstalledDependencies = []; | ||
@@ -118,11 +128,14 @@ for (const dependency of dependencyList) { | ||
for (const dep of packageDependenciesSet.keys()) { | ||
reg.lastIndex = 0; | ||
if (reg.test(dep)) { | ||
dependenciesMap.set(dep, null); | ||
toBeInstalledDependencies.push(dep); | ||
} | ||
} | ||
} else if (packageDependenciesSet.has(dependency)) { | ||
toBeInstalledDependencies.push(dependency); | ||
} | ||
else if (packageDependenciesSet.has(dependency)) { | ||
dependenciesMap.set(dependency, null); | ||
} | ||
} | ||
return toBeInstalledDependencies; | ||
} | ||
@@ -129,0 +142,0 @@ |
12960
297