UNPKG

1.83 kBJavaScriptView Raw
1/**
2 * peer dependencies can define js-builder "plugins" by defining
3 * a @jenkins-cd/js-builder.js file.
4 */
5
6var paths = require('./paths');
7var path = require('path');
8var cwd = process.cwd();
9var fs = require('fs');
10var dependencies = require('./dependecies');
11var logger = require('./logger');
12
13exports.install = function(builder) {
14 // Iterate over all of the installed node_modules. If a given dependency
15 // is listed as a dependency of "this" package, then lets see if it has
16 // a @jenkins-cd/js-builder.js file.
17
18 paths.walkDirs(cwd + '/node_modules', function(dir) {
19 var packageJsonFile = path.resolve(dir, 'package.json');
20 if (fs.existsSync(packageJsonFile)) {
21 try {
22 var packageJson = require(packageJsonFile);
23 if (dependencies.getDependency(packageJson.name)) {
24 var pluginFile = path.resolve(dir, '@jenkins-cd/js-builder.js');
25 if (fs.existsSync(pluginFile)) {
26 logger.logInfo('Running Jenkins js-builder plugin: ' + packageJson.name);
27 var plugin = require(pluginFile);
28 // The plugin impl can execute it's init code at the
29 // top level, or within an install function. Having an
30 // install function can simplify test implementation
31 // for the plugin by giving it some control over its
32 // lifecycle.
33 if (typeof plugin.install === 'function') {
34 plugin.install(builder);
35 }
36 }
37 }
38 } finally {
39 return false; // Don't recurse down inside the top level NPM packages.
40 }
41 }
42 });
43};
\No newline at end of file