Skip to content

Commit 0353379

Browse files
author
Yaroslav Onischenko
authored
Merge pull request #295 from magento-frontend/MAGETWO-55345
MAGETWO-55345 Grunt uses actual theme's list
2 parents 8744435 + ee2ce79 commit 0353379

File tree

8 files changed

+98
-7
lines changed

8 files changed

+98
-7
lines changed

Gruntfile.js.sample

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55

66
// For performance use one level down: 'name/{,*/}*.js'
77
// If you want to recursively match all subfolders, use: 'name/**/*.js'
8+
89
module.exports = function (grunt) {
910
'use strict';
1011

1112
var _ = require('underscore'),
1213
path = require('path'),
13-
themes = require('./dev/tools/grunt/configs/themes'),
14+
filesRouter = require('./dev/tools/grunt/tools/files-router'),
1415
configDir = './dev/tools/grunt/configs',
15-
tasks = grunt.file.expand('./dev/tools/grunt/tasks/*');
16+
tasks = grunt.file.expand('./dev/tools/grunt/tasks/*'),
17+
themes;
18+
19+
filesRouter.set('themes', 'dev/tools/grunt/configs/themes');
20+
themes = filesRouter.get('themes');
1621

1722
tasks = _.map(tasks, function(task){ return task.replace('.js', '') });
1823
tasks.push('time-grunt');

dev/tools/grunt/configs/clean.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
'use strict';
77

8-
var themes = require('./themes'),
8+
var themes = require('../tools/files-router').get('themes'),
99
_ = require('underscore');
1010

1111
var themeOptions = {};

dev/tools/grunt/configs/combo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
'use strict';
77

8-
var theme = require('./themes'),
8+
var theme = require('../tools/files-router').get('themes'),
99
path = require('./path');
1010

1111
/**

dev/tools/grunt/configs/exec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
'use strict';
77

88
var combo = require('./combo'),
9-
themes = require('./themes'),
9+
themes = require('../tools/files-router').get('themes'),
1010
_ = require('underscore');
1111

1212
var themeOptions = {};

dev/tools/grunt/configs/less.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
'use strict';
77

88
var combo = require('./combo'),
9-
themes = require('./themes'),
9+
themes = require('../tools/files-router').get('themes'),
1010
_ = require('underscore');
1111

1212
var themeOptions = {};

dev/tools/grunt/configs/watch.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
'use strict';
77

88
var combo = require('./combo'),
9-
themes = require('./themes'),
9+
themes = require('../tools/files-router').get('themes'),
1010
_ = require('underscore');
1111

1212
var themeOptions = {};

dev/tools/grunt/tools/files-router.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/**
2+
* Copyright © 2016 Magento. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
'use strict';
7+
8+
var defaultConfig = {},
9+
10+
/**
11+
* Generates full path to file.
12+
*
13+
* @param {String} path - relative path to file.
14+
*
15+
* @returns {String} Full path to file
16+
*/
17+
getFullPath = function (path) {
18+
return process.cwd() + '/' + path;
19+
},
20+
21+
/**
22+
* Returns file.
23+
*
24+
* @param {String} path - relative path to file.
25+
*
26+
* @returns {Object|Null} File or NULL
27+
*/
28+
getFile = function (path) {
29+
try {
30+
return require(getFullPath(path));
31+
} catch (error) {
32+
return null;
33+
}
34+
},
35+
36+
/**
37+
* Immediately invoked function.
38+
* Loads user config file.
39+
*/
40+
userConfig = (function () {
41+
try {
42+
return require(process.cwd() + '/grunt-config');
43+
} catch (error) {
44+
return null;
45+
}
46+
})();
47+
48+
module.exports = {
49+
50+
/**
51+
* Loads file.
52+
* Load priority:
53+
* From user config;
54+
* From default config with ".loc" suffix ;
55+
* From default config;
56+
*
57+
* @param {String} alias
58+
*
59+
* @returns {Object} themes file or error
60+
*/
61+
get: function (alias) {
62+
var tmp;
63+
64+
if (userConfig && userConfig[alias]) {
65+
return require(getFullPath(userConfig[alias]));
66+
} else if (tmp = getFile(defaultConfig[alias] + '.loc') || getFile(defaultConfig[alias])) {
67+
return tmp;
68+
} else {
69+
throw new Error('Cannot find file. Alias "' + alias + '" not set. ' +
70+
'Use "filesRouter.set" method to set it.').stack;
71+
}
72+
},
73+
74+
/**
75+
* Sets file alias.
76+
*
77+
* @param {String} alias
78+
* @param {String} path
79+
*/
80+
set: function (alias, path) {
81+
defaultConfig[alias] = path;
82+
}
83+
};

grunt-config.json.sample

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"themes": "dev/tools/grunt/configs/local-themes"
3+
}

0 commit comments

Comments
 (0)