UNPKG

2.98 kBJavaScriptView Raw
1var maven = require('./maven');
2var dependencies = require('./dependecies');
3var logger = require('./logger');
4var paths = require('./paths');
5var fs = require('fs');
6var ModuleSpec = require('@jenkins-cd/js-modules/js/ModuleSpec');
7var cwd = process.cwd();
8var templates = require('./templates');
9var exportModuleTemplate = templates.getTemplate('export-module.hbs');
10
11exports.bundleFor = function(builder, packageName) {
12 var packageSpec = new ModuleSpec(packageName);
13
14 if (!packageSpec.getLoadBundleFileNamePrefix()) {
15 logger.logInfo('Not create Jenkins adjunct based external module bundle for package "' + packageName + '". Is using a non-specific version name.');
16 return undefined;
17 }
18
19 var extVersionMetadata = dependencies.externalizedVersionMetadata(packageSpec.moduleName);
20
21 if (!extVersionMetadata) {
22 throw new Error('Unable to create Jenkins adjunct based external module bundle for package "' + packageName + '". This package is not installed.');
23 }
24
25 var normalizedPackageName = extVersionMetadata.normalizedPackageName;
26 var jsModuleNames = extVersionMetadata.jsModuleNames;
27 var depVersion = extVersionMetadata.depVersion;
28 var inDir = 'target/classes/org/jenkins/ui/jsmodules/' + normalizedPackageName;
29
30 if (!fs.existsSync(cwd + '/' + inDir + '/' + jsModuleNames.filenameFor(depVersion) + '.js')) {
31 // We need to generate an adjunct bundle for the package.
32 var bundleSrc = generateBundleSrc(extVersionMetadata);
33 builder.bundle(bundleSrc, packageName + '@' + depVersion.raw)
34 .inDir(inDir)
35 .ignoreGlobalExportMappings()
36 .noEmptyModuleExport();
37 } else {
38 // The bundle has already been generated. No need to do it again.
39 // For linked modules ... do an rm -rf of the target dir ... sorry :)
40 logger.logInfo('Bundle for "' + packageName + '" already created. Delete "target" directory ad run bundle again to recreate.');
41 }
42
43 return extVersionMetadata.importAs();
44};
45
46function generateBundleSrc(extVersionMetadata) {
47 var packageName = extVersionMetadata.packageName;
48 var normalizedPackageName = extVersionMetadata.normalizedPackageName;
49 var jsModuleNames = extVersionMetadata.jsModuleNames;
50 var depVersion = extVersionMetadata.depVersion;
51 var srcContent = '';
52
53 srcContent += "//\n";
54 srcContent += "// NOTE: This file is generated and should NOT be added to source control.\n";
55 srcContent += "//\n";
56 srcContent += "\n";
57 srcContent += exportModuleTemplate({
58 packageName: packageName,
59 normalizedPackageName: normalizedPackageName,
60 jsModuleNames: jsModuleNames
61 });
62
63 var bundleSrcDir = 'target/js-bundle-src';
64
65 paths.mkdirp(bundleSrcDir);
66
67 var bundleSrcFile = bundleSrcDir + '/' + jsModuleNames.filenameFor(depVersion) + '.js';
68 fs.writeFileSync(cwd + '/' + bundleSrcFile, srcContent);
69 return bundleSrcFile;
70}
\No newline at end of file