Skip to content

Commit 7dbc086

Browse files
committed
Move composer.json to correct vendor directory before running install
1 parent 299d6db commit 7dbc086

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

tasks/package.js

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,49 @@ module.exports = function(grunt) {
1212
grunt.registerTask('packageRewriteComposer', '', function() {
1313
var pathBuild = grunt.config('config.buildPaths.html');
1414
var pathPackage = grunt.config('config.packages.dest.docroot');
15+
var pathVendor = grunt.config('config.packages.dest.vendor');
1516
// Check if we are packaging to a custom destination.
16-
if (pathBuild !== pathPackage) {
17-
var changed = false;
18-
var regex = new RegExp('^' + pathBuild);
17+
if ((pathBuild !== pathPackage) || pathVendor) {
1918
// Load `composer.json` as JSON, convert to object.
20-
var composer = grunt.file.readJSON('composer.json');
19+
var destPath = grunt.option('package-dest');
20+
var composer = grunt.file.readJSON(destPath + '/composer.json');
21+
// Determine new installer-paths
22+
var pathInstall = pathPackage + '/';
23+
if (pathVendor) {
24+
// Make sure install path is relative to vendor location.
25+
var regex = new RegExp('^' + pathVendor + '/');
26+
pathInstall = pathInstall.replace(regex, '');
27+
}
28+
var regex = new RegExp('^' + pathBuild + '/');
2129
for (var key in composer.extra['installer-paths']) {
2230
// Add an unnecessary if check just for eslint rules.
2331
if (composer.extra['installer-paths'][key]) {
24-
var newKey = key.replace(regex, pathPackage);
32+
var newKey = key.replace(regex, pathInstall);
2533
if (newKey !== key) {
2634
// Alter keys in `extra.installer-paths` object to change `build/html`
2735
// to `html` or an alternative path from the config.
2836
var value = composer.extra['installer-paths'][key];
2937
delete composer.extra['installer-paths'][key];
3038
composer.extra['installer-paths'][newKey] = value;
31-
changed = true;
3239
}
3340
}
3441
}
35-
if (changed) {
36-
// Write out data to `composer.json` in the package output.
37-
var composerString = JSON.stringify(composer, null, 2);
38-
grunt.file.write('composer.json', composerString);
42+
43+
// Next, generate the composer.json in the correct path.
44+
var destComposer = (pathVendor) ? destPath + '/' + pathVendor : destPath;
45+
// Write out data to `composer.json` in the package output.
46+
var composerString = JSON.stringify(composer, null, 2);
47+
grunt.file.write(destComposer + '/composer.json', composerString);
48+
if (pathVendor) {
49+
// Remove the original file if we moved it.
50+
grunt.file.delete(destPath + '/composer.json');
51+
// Change working directory for composer install.
52+
grunt.config(['composer'], {
53+
options: {
54+
flags: ['no-dev'],
55+
cwd: destComposer
56+
}
57+
});
3958
}
4059
}
4160
});
@@ -51,6 +70,7 @@ module.exports = function(grunt) {
5170
var packageName = grunt.option('name') || config.name || 'package';
5271
var destPath = grunt.config.get('config.buildPaths.packages') + '/' + packageName;
5372
var tasks = [];
73+
grunt.option('package-dest', destPath);
5474

5575
grunt.config('copy.package', {
5676
files: [

0 commit comments

Comments
 (0)