1 | 'use strict';
|
2 |
|
3 | var uniq = require('lodash.uniq');
|
4 | var savedActionDefinitions = require('../action-definitions.json')
|
5 |
|
6 | var helpers = module.exports = {
|
7 | getDomainFromActionName: function(actionDefs, name) {
|
8 | name = name.split('*').slice(1).join('*');
|
9 | return actionDefs.domains.reduce(function(match, domain) {
|
10 | if (name.indexOf(domain) === 0) {
|
11 | return domain;
|
12 | }
|
13 | return match;
|
14 | });
|
15 | },
|
16 | createActionOptions: function(self, preconfiguredFunctions, actionDefs) {
|
17 | preconfiguredFunctions = preconfiguredFunctions || [];
|
18 | var domains = self.config.get('domains') || [];
|
19 | helpers.convertToAsterisks(domains);
|
20 | var actionNames = self.config.get('actionNames') || [];
|
21 | helpers.convertToAsterisks(actionNames);
|
22 | var allActionNames = uniq(actionNames.concat(
|
23 | preconfiguredFunctions.map(function(def) {
|
24 | return def.actionId;
|
25 | })));
|
26 | var preconfiguredDomains = uniq(
|
27 | domains.concat(
|
28 | preconfiguredFunctions.map(function(def) {
|
29 | return helpers.getDomainFromActionName(
|
30 | actionDefs || savedActionDefinitions,
|
31 | def.actionId
|
32 | );
|
33 | })
|
34 | )
|
35 | );
|
36 | return {
|
37 | 'skip-prompts': self.options['skip-prompts'],
|
38 | internal: self.options.internal,
|
39 | testFramework: self._testFramework,
|
40 | overwriteAll: true,
|
41 | actionNames: allActionNames,
|
42 | preconfigured: preconfiguredFunctions,
|
43 | domains: preconfiguredDomains
|
44 | }
|
45 | },
|
46 | replacePeriod: function(value) {
|
47 | return value.replace(/\./g, '*');
|
48 | },
|
49 | convertToAsterisks: function (values) {
|
50 | if (Array.isArray(values) && values.length > 0) {
|
51 | values.forEach(function(name, i, actionNames) {
|
52 | return actionNames[i] = helpers.replacePeriod(name);
|
53 | });
|
54 | return values;
|
55 | }
|
56 |
|
57 | if (typeof(values) === 'object') {
|
58 | Object.keys(values).forEach(function(key){
|
59 | var correctedKey = helpers.replacePeriod(key);
|
60 | if(key === correctedKey) {
|
61 | return;
|
62 | }
|
63 | Object.defineProperty(values, correctedKey, Object.getOwnPropertyDescriptor(values, key));
|
64 | delete values[key];
|
65 | values[correctedKey].forEach(function(value, i) {
|
66 | return values[correctedKey][i] = helpers.replacePeriod(value);
|
67 | })
|
68 | });
|
69 | return values;
|
70 | }
|
71 |
|
72 | return values;
|
73 | },
|
74 | replaceAsterisk: function(value) {
|
75 | return value.replace(/\*/g, '.');
|
76 | },
|
77 | convertToPeriods: function (values) {
|
78 | if (Array.isArray(values) && values.length > 0) {
|
79 | values.forEach(function(name, i, actionNames) {
|
80 | return actionNames[i] = helpers.replaceAsterisk(name);
|
81 | });
|
82 | return values;
|
83 | }
|
84 |
|
85 | if (typeof(values) === 'object') {
|
86 | Object.keys(values).forEach(function(key){
|
87 | var correctedKey = helpers.replaceAsterisk(key);
|
88 | if(key === correctedKey) {
|
89 | return;
|
90 | }
|
91 | Object.defineProperty(values, correctedKey, Object.getOwnPropertyDescriptor(values, key));
|
92 | delete values[key];
|
93 | values[correctedKey].forEach(function(value, i) {
|
94 | return values[correctedKey][i] = helpers.replaceAsterisk(value);
|
95 | })
|
96 | });
|
97 | return values;
|
98 | }
|
99 | return values;
|
100 | }
|
101 | };
|