build_scripts/generate_exotic_upgrades.js   A
last analyzed

Complexity

Total Complexity 11
Complexity/F 11

Size

Lines of Code 59
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 10
wmc 11
nc 35
mnd 3
bc 11
fnc 1
dl 0
loc 59
rs 10
bpm 11
cpm 11
noi 0
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A generate_exotic_upgrades.js ➔ clone 0 3 1
1
/* eslint-env node */
2
/*jslint node: true */
3
'use strict';
4
5
const jsonfile = require('jsonfile');
6
const template = require('lodash.template');
7
8
let exoticUpgrades = jsonfile.readFileSync('build/data/exotic_upgrades.json');
9
let darkUpgrades = jsonfile.readFileSync('build/data/dark_upgrades.json');
10
let generators = jsonfile.readFileSync('build/data/generators.json');
11
12
for(let key in exoticUpgrades){
13
  let upgrade = exoticUpgrades[key];
14
    if(!upgrade.prices){
15
      continue;
16
    }
17
  let nameTemplate = template(upgrade.name);
18
  let descriptionTemplate = template(upgrade.description);
19
  for(let i in upgrade.prices){
20
    let generatedUpgrade = clone(upgrade);
21
    delete generatedUpgrade.prices;
22
    let price = upgrade.prices[i];
23
    generatedUpgrade.price = price;
24
    generatedUpgrade.name = nameTemplate({'id': i});
25
    generatedUpgrade.description = descriptionTemplate({'id': i});
26
    for(let index in generatedUpgrade.function){
27
      generatedUpgrade.function[index] = template(generatedUpgrade.function[index])({'id': i});
28
    }
29
    for(let index in generatedUpgrade.exotic_deps){
30
      generatedUpgrade.exotic_deps[index] = template(generatedUpgrade.exotic_deps[index])({'id': i});
31
    }
32
    let id = key+'-'+i;
33
    exoticUpgrades[id] = generatedUpgrade;
34
  }
35
  delete exoticUpgrades[key];
36
}
37
38
function clone(a) {
39
   return JSON.parse(JSON.stringify(a));
40
}
41
42
for(let key in exoticUpgrades){
43
  let upgrade = exoticUpgrades[key];
44
  for(let up of upgrade.exotic_deps){
45
    if(!exoticUpgrades[up]){
46
      throw new Error('Exotic dependency doesn\'t exist: '+ up + ' for '+ key);
47
    }
48
  }
49
  for(let up of upgrade.dark_deps){
50
    if(!darkUpgrades[up]){
51
      throw new Error('Dark dependency doesn\'t exist: '+ up + ' for '+ key);
52
    }
53
  }
54
}
55
56
jsonfile.writeFileSync('build/data/exotic_upgrades.json', exoticUpgrades, {
57
  spaces: 2
58
});
59
jsonfile.writeFileSync('build/data/generators.json', generators, {
60
  spaces: 2
61
});
62