UNPKG

2.74 kBJavaScriptView Raw
1const path = require('path')
2const fs = require('fs')
3const mk = require('mkdirp')
4
5const win = process.platform === 'win32'
6const env = process.env
7const log = console.log
8
9let cfg = {
10 $anyway: 0,
11 getPath(cat) {
12 let pac = path.join(win ? env.APPDATA : env.HOME, win ? 'wowa' : '.wowa')
13 let pag
14
15 if (env.TEST_WOWA) pac = path.join(path.dirname(pac), '.test_wowa')
16
17 let pathFile = path.join(pac, 'wow_path.txt')
18 if (fs.existsSync(pathFile)) pag = fs.readFileSync(pathFile, 'utf-8').trim()
19 else {
20 if (env.TEST_WOWA) pag = path.join(pac, '.test/_retail_')
21 else
22 pag = path.join(
23 win ? 'C:\\Program Files' : '/Applications',
24 'World of Warcraft',
25 '_retail_'
26 )
27
28 mk(pac, err => {
29 fs.writeFileSync(pathFile, pag, 'utf-8')
30 })
31 }
32
33 let mode = path.basename(pag)
34 let paths = {
35 addon: path.join(pag, 'Interface', 'AddOns'),
36 wtf: path.join(pag, 'WTF'),
37 wowaads: path.join(pag, 'WTF', 'wowaads.json'),
38 pathfile: pathFile,
39 tmp: pac,
40 mode: mode,
41 db: path.join(pac, '.db'),
42 update: path.join(pac, '.update'),
43 game: pag
44 }
45
46 return cat in paths ? paths[cat] : pag
47 },
48
49 checkPath() {
50 let wow = cfg.getPath()
51 let e = fs.existsSync(wow)
52
53 // log('checking', wow)
54 if (!e) {
55 log(
56 '\nWoW folder not found, you can specify it by editing the file below:'
57 )
58 log('\n ' + cfg.getPath('pathfile') + '\n')
59 }
60
61 return e
62 },
63
64 getMode(ver) {
65 let tail = path.basename(cfg.getPath())
66
67 return ver
68 ? tail.match(/ptr/)
69 ? '[PTR]'
70 : tail.match(/beta/)
71 ? '[BETA]'
72 : ''
73 : tail.match(/classic/)
74 ? '_classic_'
75 : '_retail_'
76 },
77
78 testMode(mode) {
79 let m = cfg.getMode()
80
81 return typeof mode === 'number'
82 ? mode & (m === '_retail_' ? 1 : 2)
83 : m === mode
84 },
85
86 setModePath(mp) {
87 let p = path.join(path.dirname(cfg.getPath('game')), mp)
88
89 if (fs.existsSync(p)) fs.writeFileSync(cfg.getPath('pathfile'), p, 'utf-8')
90 else
91 log(
92 '\nMode folder does not exist, you must run the game in that mode for at least one time before using wowa'
93 )
94 },
95
96 // these two is useless at this moment, we don't bother with the version at this moment
97 // getGameVersion() {
98 // let mo = cfg.getMode()
99 // return mo === '_classic_' ? '1.13.2' : '8.2.0'
100 // },
101
102 // isValidVersion(v) {
103 // let mo = cfg.getMode()
104
105 // return (
106 // (mo === '_classic_' && v.search('1.') === 0) ||
107 // (mo === '_retail_' && v.search('1.') !== 0)
108 // )
109 // },
110
111 anyway(en) {
112 if (!en) return cfg.$anyway
113 cfg.$anyway = en
114 }
115}
116
117module.exports = cfg