@zohodesk/codestandard-validator 0.0.4-exp-2 → 0.0.4-exp-6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,7 +35,7 @@ async function postInstall() {
35
35
  isGitInitialized() ? await executeMethodsThatReturnBooleanValue("Some issue occurred in setting up husky.", setupHusky, null) : null;
36
36
  await executeMethodsThatReturnBooleanValue("Make sure zgit.csez.zohocorpin.com is accessible", cloneViaCdt, null);
37
37
  await executeMethodsThatReturnBooleanValue("Some issue occurred in creating eslint config file.", createEslintConfigFile, null);
38
- Logger.log(Logger.SUCCESS_TYPE, "Pre commit setup successful");
38
+ Logger.log(Logger.SUCCESS_TYPE, "Pre commit setup successfull");
39
39
  arePluginsInstalled();
40
40
  } catch (error) {
41
41
  Logger.log(Logger.FAILURE_TYPE, `Kindly retry npm install. & ${error.message}`);
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ const path = require('path');
4
+ const {
5
+ getNodeModulesPath
6
+ } = require('../General/getNodeModulesPath');
7
+ const {
8
+ writeFileSync
9
+ } = require('fs');
10
+ const {
11
+ Logger
12
+ } = require('../Logger/Logger');
13
+ function createVersionControlFile(uninstalledPlugins) {
14
+ Logger.log(Logger.INFO_TYPE, `Rule Plugin Versions are Noted in pluginVersionControl.js`);
15
+ const versionfilePath = path.join(getNodeModulesPath(), 'node_modules', '@zohodesk', 'codestandard-validator', 'pluginVersionControl.js');
16
+ writeFileSync(versionfilePath, `module.exports.plugins = [${uninstalledPlugins.map(plugin => {
17
+ return JSON.stringify({
18
+ plugin: `${plugin}`,
19
+ time: `${new Date()}`
20
+ });
21
+ }).join(',')}]`);
22
+ }
23
+ module.exports = {
24
+ createVersionControlFile
25
+ };
@@ -74,30 +74,50 @@ function getAllPlugins() {
74
74
  */
75
75
  function checkIfPluginsAreInstalled() {
76
76
  const pluginsForCurrentRepo = getAllPlugins();
77
- let uninstalledPlugins = [];
78
- let plugin = {
77
+ var uninstalledPlugins = [];
78
+ var plugin = {
79
79
  noPluginMessage: '',
80
80
  uninstalledPlugins: []
81
81
  };
82
- let pluginsIndevDependencies = {};
83
- let pluginNamesOfDevDependencyPlugins = [];
84
- let arePluginsPresentIndevDependencies = false;
85
- let arePluginsPresentForCurrentRepo = false;
86
- if (existsSync(path.join(getNodeModulesPath(), 'package.json'))) {
87
- let packageJsonContent = require(path.join(getNodeModulesPath(), 'package.json'));
88
- pluginsIndevDependencies = packageJsonContent.devDependencies;
89
- if (pluginsIndevDependencies !== undefined) {
90
- arePluginsPresentIndevDependencies = true;
91
- pluginNamesOfDevDependencyPlugins = Object.keys(pluginsIndevDependencies);
92
- } else if (pluginsIndevDependencies === undefined) {
93
- Logger.log(Logger.INFO_TYPE, 'No devDependencies present!');
82
+ // let pluginsIndevDependencies = {}
83
+ // let pluginNamesOfDevDependencyPlugins = []
84
+ // let arePluginsPresentIndevDependencies = false
85
+ // var arePluginsPresentForCurrentRepo = false
86
+
87
+ // if(existsSync(path.join(getNodeModulesPath(),'package.json'))){
88
+ // let packageJsonContent = require(path.join(getNodeModulesPath(),'package.json'))
89
+ // pluginsIndevDependencies = packageJsonContent.devDependencies
90
+
91
+ // if(pluginsIndevDependencies !== undefined){
92
+ // arePluginsPresentIndevDependencies = true
93
+ // pluginNamesOfDevDependencyPlugins = Object.keys(pluginsIndevDependencies)
94
+ // }
95
+ // else if(pluginsIndevDependencies === undefined){
96
+ // Logger.log(Logger.INFO_TYPE,'No devDependencies present!')
97
+ // }
98
+ // }
99
+ // else{
100
+ // arePluginsPresentIndevDependencies = false
101
+ // }
102
+
103
+ // arePluginsPresentForCurrentRepo = pluginsForCurrentRepo.length !== 0 ? true : false
104
+
105
+ uninstalledPlugins = pluginsForCurrentRepo.map(plugin => {
106
+ const {
107
+ packageName,
108
+ version
109
+ } = plugin;
110
+ const {
111
+ isPluginPresent,
112
+ pluginPath
113
+ } = checkPluginsPresentInNodemodules(packageName);
114
+ if (isPluginPresent && checkPluginHasProperVersion(packageName, pluginPath, version)) {
115
+ return false;
94
116
  }
95
- } else {
96
- arePluginsPresentIndevDependencies = false;
97
- }
98
- arePluginsPresentForCurrentRepo = pluginsForCurrentRepo.length !== 0 ? true : false;
99
- if (arePluginsPresentForCurrentRepo || arePluginsPresentIndevDependencies) {
100
- uninstalledPlugins = getUnInstalledPlugins(pluginsForCurrentRepo, pluginNamesOfDevDependencyPlugins, pluginsIndevDependencies);
117
+ return `${packageName}@${version}`;
118
+ }).filter(Boolean);
119
+ if (uninstalledPlugins.length > 0) {
120
+ // uninstalledPlugins = getUnInstalledPlugins(pluginsForCurrentRepo, pluginNamesOfDevDependencyPlugins, pluginsIndevDependencies);
101
121
  plugin.noPluginMessage = '';
102
122
  plugin.uninstalledPlugins = uninstalledPlugins;
103
123
  return plugin;
@@ -107,6 +127,25 @@ function checkIfPluginsAreInstalled() {
107
127
  return plugin;
108
128
  }
109
129
  }
130
+ function checkPluginsPresentInNodemodules(rulePluginName) {
131
+ try {
132
+ const pluginPath = require.resolve(rulePluginName.toString());
133
+ return {
134
+ pluginPath: pluginPath,
135
+ isPluginPresent: existsSync(pluginPath)
136
+ };
137
+ } catch (error) {
138
+ return {
139
+ pluginPath: "",
140
+ isPluginPresent: false
141
+ };
142
+ }
143
+ }
144
+ function checkPluginHasProperVersion(rulePluginName, installationPath, remotePluginVersion) {
145
+ const pluginPathArray = installationPath.toString().split(rulePluginName);
146
+ const rulePluginPackageJSONPath = path.join(pluginPathArray[0], rulePluginName, 'package.json');
147
+ return remotePluginVersion == require(rulePluginPackageJSONPath).version ? true : false;
148
+ }
110
149
  module.exports = {
111
150
  checkIfPluginsAreInstalled
112
151
  };
@@ -12,16 +12,20 @@ const {
12
12
  const {
13
13
  Logger
14
14
  } = require('../Logger/Logger');
15
+ const {
16
+ createVersionControlFile
17
+ } = require('../FileAndFolderOperations/versionControl');
15
18
 
16
19
  /**
17
20
  * @function installPlugins - installs uninstalled plugins for the project
18
21
  * @returns {boolean} - indicating if plugins to be installed are installed successfully or not
19
22
  */
20
23
  function installPlugins() {
21
- let uninstalledPlugins = checkIfPluginsAreInstalled();
22
- let pluginsToBeInstalled = uninstalledPlugins.uninstalledPlugins;
24
+ let {
25
+ uninstalledPlugins: pluginsToBeInstalled
26
+ } = checkIfPluginsAreInstalled();
23
27
  if (pluginsToBeInstalled.length > 0) {
24
- let installCommand = `npm install --save-dev ${pluginsToBeInstalled.join(' ')}`;
28
+ let installCommand = `npm install --no-save ${pluginsToBeInstalled.join(' ')}`;
25
29
  Logger.log(Logger.INFO_TYPE, 'Installing plugins ....');
26
30
  Logger.log(Logger.INFO_TYPE, `Install command being executed: ${installCommand}`);
27
31
  let arePluginsInstalledSuccessfully = executeSynchronizedCommands(execSync, [installCommand, {
@@ -29,6 +33,7 @@ function installPlugins() {
29
33
  }], '', 'Some issue occured while installing plugins', false, true);
30
34
  if (arePluginsInstalledSuccessfully) {
31
35
  Logger.log(Logger.SUCCESS_TYPE, 'Plugins installation successful');
36
+ createVersionControlFile(pluginsToBeInstalled);
32
37
  return true;
33
38
  } else {
34
39
  Logger.log(Logger.FAILURE_TYPE, "Unable to install plugins.Kindly retry the command");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/codestandard-validator",
3
- "version": "0.0.4-exp-2",
3
+ "version": "0.0.4-exp-6",
4
4
  "description": "library to enforce code standard using eslint",
5
5
  "main": "index.js",
6
6
  "scripts": {