Completed
Push — master ( ba3292...a1717d )
by Andres
39s
created

build_scripts/generate_exotic_upgrades.js   A

Complexity

Total Complexity 6
Complexity/F 6

Size

Lines of Code 46
Function Count 1

Duplication

Duplicated Lines 46
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
wmc 6
c 1
b 0
f 0
nc 7
mnd 3
bc 6
fnc 1
dl 46
loc 46
rs 10
bpm 6
cpm 6
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A generate_exotic_upgrades.js ➔ clone 3 3 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
/* eslint-env node */
2
/*jslint node: true */
3 View Code Duplication
'use strict';
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
4
5
const jsonfile = require('jsonfile');
6
const template = require('lodash.template');
7
8
const args = process.argv.slice(2);
9
10
let upgrades = jsonfile.readFileSync(args[0]+'/data/exotic_upgrades.json');
11
let generators = jsonfile.readFileSync(args[0]+'/data/generators.json');
12
13
for(let key in upgrades){
14
  let upgrade = upgrades[key];
15
    if(!upgrade.prices){
16
      continue;
17
    }
18
  let nameTemplate = template(upgrade.name);
19
  let descriptionTemplate = template(upgrade.description);
20
  for(let i in upgrade.prices){
21
    let generatedUpgrade = clone(upgrade);
22
    delete generatedUpgrade.prices;
23
    let price = upgrade.prices[i];
24
    generatedUpgrade.price = price;
25
    generatedUpgrade.name = nameTemplate({'id': i});
26
    generatedUpgrade.description = descriptionTemplate({'id': i});
27
    for(let index in generatedUpgrade.function){
28
      generatedUpgrade.function[index] = template(generatedUpgrade.function[index])({'id': i});
29
    }
30
    for(let index in generatedUpgrade.exotic_deps){
31
      generatedUpgrade.exotic_deps[index] = template(generatedUpgrade.exotic_deps[index])({'id': i});
32
    }
33
    let id = key+'-'+i;
34
    upgrades[id] = generatedUpgrade;
35
  }
36
  delete upgrades[key];
37
}
38
39
function clone(a) {
40
   return JSON.parse(JSON.stringify(a));
41
}
42
43
jsonfile.writeFileSync(args[0] + '/data/exotic_upgrades.json', upgrades, {
44
  spaces: 2
45
});
46
jsonfile.writeFileSync(args[0] + '/data/generators.json', generators, {
47
  spaces: 2
48
});
49