This repository was archived by the owner on Feb 14, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinstall_linked_dependencies.js
More file actions
97 lines (90 loc) · 3.33 KB
/
install_linked_dependencies.js
File metadata and controls
97 lines (90 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const util = require('util');
const exec = util.promisify(require('child_process').exec);
const path = require('path');
const generator_dir = path.resolve('../linked_generators');
const fs = require('fs-extra');
const Promise = require('bluebird');
const linked_dependencies = require(path.resolve(process.env.UPDATE_DEPENDENCIES));
fs.ensureDirSync(generator_dir);
Promise.map(linked_dependencies, generator => {
let branch = (process.env.TRAVIS_BRANCH == 'master') ? 'master' : 'develop';
return exec(`git clone -b ${branch} ${generator.repo}`, {cwd: generator_dir})
.then(() => {
// Check if the package.json exists
if (fs.existsSync(path.join(generator_dir, generator.npm_dir || generator.name, 'package.json'))) {
return exec('git rev-parse --short HEAD', {cwd: path.resolve(generator_dir, generator.name)})
.then(result => {
return Promise.resolve(`${generator.name} cloned at ${result.stdout}`);
}, error => {
console.error(error);
return Promise.reject(`Linking of ${generator.name} failed.`);
})
}
})
.then(result => {
console.log(result);
fs.removeSync(path.join(generator_dir, generator.npm_dir || generator.name, 'package-lock.json'));
return exec('npm link', {cwd: path.join(generator_dir, generator.npm_dir || generator.name)})
.then(result => {
return Promise.resolve(result.stdout);
}, error => {
console.error(error);
return Promise.reject(`Linking of ${generator.name} failed.`);
});
})
.then(result => {
console.log(result);
return Promise.resolve(`${generator.name} linked successfully.`);
})
.catch(error => {
console.log(error);
return Promise.reject(`Installation of ${generator.name} failed to complete`);
});
})
.then(result => {
console.log(result);
return Promise.map(linked_dependencies, generator => {
if(!generator.dependencies) {
return exec(`npm link ${generator.package_name || generator.name}`)
.then(result => {
console.log(result.stdout);
return Promise.resolve(`Linking of ${generator.name} to project complete.`);
}, error => {
console.error(error);
return Promise.reject(`Linking of ${generator.name} to project failed.`);
});
}
return Promise.map(generator.dependencies, dependency => {
return exec(`npm link ${dependency}`, {cwd: path.join(generator_dir, generator.npm_dir || generator.name)})
.then(result => {
console.log(result.stdout);
if(generator.skip_project_link) {
return Promise.resolve();
}
return Promise.resolve(`Linking of ${dependency} to ${generator.name} complete.`)
}, error => {
console.error(error);
return Promise.reject(`Linking of ${dependency} to ${generator.name} failed.`);
});
})
.then(result => {
console.log(result);
return exec(`npm link ${generator.package_name || generator.name}`)
.then(result => {
console.log(result.stdout);
return Promise.resolve(`Linking of ${generator.name} to project complete.`);
}, error => {
console.error(error);
return Promise.reject(`Linking of ${generator.name} to project failed.`);
});
});
});
})
.then(result => {
console.log(result);
console.log('ALL DONE');
})
.catch(error => {
console.error(error);
process.exit(1);
});