1
1
#!/usr/bin/env node
2
+ 'use strict' ;
3
+ // no-var is disabled since this is supposed to support old versions of node
4
+ // block scoped var is just because idk what the fuck is going on there since it wasn't
5
+ // failing before
6
+ /* eslint-disable block-scoped-var, no-var, no-redeclare*/
2
7
3
8
// Before running, ensure that the Typescript files have been compiled.
4
9
//
5
10
// Simply doing `require('../build')` here doesn't work because the `replace`
6
11
// step of the build is asynchronous and we can't wait for it to finish easily
7
12
// unless we shell out and use `execSync`. However, the heuristic of simply
8
- // checking for the presence of './.sim- dist/dex' to determine whether a build
13
+ // checking for the presence of './dist/sim /dex' to determine whether a build
9
14
// is required is somewhat risky as it only is valid from a clean repository -
10
15
// if you make edits or have previous build artifacts lying around, this
11
16
// script could potentially be missing additional sources or the compiled output
16
21
// of interfacing with the simulator from non-JS languages. Otherwise we error
17
22
// on the side of caution and run `node build` to ensure we're always running
18
23
// with the latest code.
19
- var built = false ;
24
+ var fs = require ( 'fs' ) ;
20
25
function build ( ) {
21
26
require ( 'child_process' ) . execSync ( 'node build' , { stdio : 'inherit' , cwd : __dirname } ) ;
22
- built = true ;
23
27
}
24
28
25
29
function readTeam ( stream ) {
@@ -29,46 +33,8 @@ function readTeam(stream) {
29
33
} ) ;
30
34
}
31
35
32
-
33
- function installDependencies ( ) {
34
- console . log ( `Installing dependencies...` ) ;
35
- require ( 'child_process' ) . execSync ( 'npm install --production' , { stdio : 'inherit' } ) ;
36
- }
37
-
38
- function registerTSNode ( ) {
39
- require ( 'ts-node' ) . register ( { project : './tsconfig.json' , files : true , transpileOnly : true , transpiler : 'ts-node/transpilers/swc-experimental' } ) ;
40
- }
41
-
42
- // enable require()ing TypeScript files
43
- function setupTSNode ( ) {
44
- try {
45
- registerTSNode ( ) ;
46
- } catch ( e ) {
47
- installDependencies ( ) ;
48
- registerTSNode ( ) ;
49
- }
50
- }
51
-
52
- function ensureSucraseIsInstalled ( ) {
53
- try {
54
- const sucraseVersion = require ( 'sucrase' ) . getVersion ( ) . split ( '.' ) ;
55
- if (
56
- parseInt ( sucraseVersion [ 0 ] ) < 3 ||
57
- ( parseInt ( sucraseVersion [ 0 ] ) === 3 && parseInt ( sucraseVersion [ 1 ] ) < 12 )
58
- ) {
59
- throw new Error ( "Sucrase version too old" ) ;
60
- }
61
- } catch ( e ) {
62
- installDependencies ( ) ;
63
- }
64
- }
65
-
66
- function sucraseBuild ( ) {
67
- ensureSucraseIsInstalled ( ) ;
68
- try {
69
- require . resolve ( './.sim-dist/dex' ) ;
70
- } catch ( err ) {
71
- if ( err . code !== 'MODULE_NOT_FOUND' ) throw err ; // should never happen
36
+ function ensureBuilt ( ) {
37
+ if ( ! fs . existsSync ( './dist' ) ) {
72
38
build ( ) ;
73
39
}
74
40
}
@@ -80,9 +46,10 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
80
46
// when launching with this file the same way app.js normally allows, e.g. to
81
47
// host on port 9000:
82
48
// $ ./pokemon-showdown 9000
83
- setupTSNode ( ) ;
84
- require ( 'module' ) . _load ( './server' , module , true ) ;
85
- } else switch ( process . argv [ 2 ] ) {
49
+ build ( ) ;
50
+ require ( 'module' ) . _load ( './dist/server/index.js' , module , true ) ;
51
+ } else {
52
+ switch ( process . argv [ 2 ] ) {
86
53
case 'help' :
87
54
case 'h' :
88
55
case '?' :
@@ -109,7 +76,7 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
109
76
console . log ( 'pokemon-showdown simulate-battle' ) ;
110
77
console . log ( '' ) ;
111
78
console . log ( ' Simulates a battle, taking input to stdin and writing output to stdout' ) ;
112
- console . log ( ' Protocol is documented in ./.sim- dist/README.md' ) ;
79
+ console . log ( ' Protocol is documented in ./dist/sim /README.md' ) ;
113
80
console . log ( '' ) ;
114
81
console . log ( 'pokemon-showdown json-team' ) ;
115
82
console . log ( '' ) ;
@@ -128,27 +95,27 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
128
95
console . log ( ' Displays this reference' ) ;
129
96
break ;
130
97
case 'start' :
131
- {
132
- process . argv . splice ( 2 , 1 ) ;
133
- setupTSNode ( ) ;
134
- require ( 'module' ) . _load ( './server' , module , true ) ;
135
- break ;
136
- }
98
+ {
99
+ process . argv . splice ( 2 , 1 ) ;
100
+ build ( ) ;
101
+ require ( 'module' ) . _load ( './dist/ server/index.js ' , module , true ) ;
102
+ break ;
103
+ }
137
104
case 'generate-team' :
138
105
{
139
- sucraseBuild ( ) ;
140
- var Teams = require ( './.sim- dist/teams' ) . Teams ;
106
+ ensureBuilt ( ) ;
107
+ var Teams = require ( './dist/sim/ teams.js ' ) . Teams ;
141
108
var seed = process . argv [ 4 ] ? process . argv [ 4 ] . split ( ',' ) . map ( Number ) : undefined ;
142
109
console . log ( Teams . pack ( Teams . generate ( process . argv [ 3 ] , { seed} ) ) ) ;
143
110
}
144
111
break ;
145
112
case 'validate-team' :
146
113
{
147
- sucraseBuild ( ) ;
148
- var Teams = require ( './.sim- dist/teams' ) . Teams ;
149
- var TeamValidator = require ( './.sim- dist/team-validator' ) . TeamValidator ;
114
+ ensureBuilt ( ) ;
115
+ var Teams = require ( './dist/sim/ teams.js ' ) . Teams ;
116
+ var TeamValidator = require ( './dist/sim/ team-validator.js ' ) . TeamValidator ;
150
117
var validator = TeamValidator . get ( process . argv [ 3 ] ) ;
151
- var Streams = require ( './.lib- dist/streams' ) ;
118
+ var Streams = require ( './dist/lib/ streams.js ' ) ;
152
119
var stdin = Streams . stdin ( ) ;
153
120
154
121
readTeam ( stdin ) . then ( function ( textTeam ) {
@@ -169,9 +136,9 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
169
136
break ;
170
137
case 'simulate-battle' :
171
138
{
172
- sucraseBuild ( ) ;
173
- var BattleTextStream = require ( './.sim- dist/battle-stream' ) . BattleTextStream ;
174
- var Streams = require ( './.lib- dist/streams' ) ;
139
+ build ( ) ;
140
+ var BattleTextStream = require ( './dist/sim/ battle-stream.js ' ) . BattleTextStream ;
141
+ var Streams = require ( './dist/lib /streams' ) ;
175
142
var stdin = Streams . stdin ( ) ;
176
143
var stdout = Streams . stdout ( ) ;
177
144
@@ -221,9 +188,9 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
221
188
case 'unpack-team' :
222
189
case 'json-team' :
223
190
{
224
- sucraseBuild ( ) ;
225
- var Teams = require ( './.sim- dist/teams' ) . Teams ;
226
- var Streams = require ( './.lib- dist/streams' ) ;
191
+ build ( ) ;
192
+ var Teams = require ( './dist/sim /teams' ) . Teams ;
193
+ var Streams = require ( './dist/lib /streams' ) ;
227
194
var stdin = Streams . stdin ( ) ;
228
195
229
196
readTeam ( stdin ) . then ( function ( team ) {
@@ -240,9 +207,9 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
240
207
break ;
241
208
case 'pack-team' :
242
209
{
243
- sucraseBuild ( ) ;
244
- var Teams = require ( './.sim- dist/teams' ) . Teams ;
245
- var Streams = require ( './.lib- dist/streams' ) ;
210
+ build ( ) ;
211
+ var Teams = require ( './dist/sim /teams' ) . Teams ;
212
+ var Streams = require ( './dist/lib /streams' ) ;
246
213
var stdin = Streams . stdin ( ) ;
247
214
248
215
readTeam ( stdin ) . then ( function ( team ) {
@@ -259,9 +226,9 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
259
226
break ;
260
227
case 'export-team' :
261
228
{
262
- sucraseBuild ( ) ;
263
- var Teams = require ( './.sim- dist/teams' ) . Teams ;
264
- var Streams = require ( './.lib- dist/streams' ) ;
229
+ build ( ) ;
230
+ var Teams = require ( './dist/sim /teams' ) . Teams ;
231
+ var Streams = require ( './dist/lib /streams' ) ;
265
232
var stdin = Streams . stdin ( ) ;
266
233
267
234
readTeam ( stdin ) . then ( function ( team ) {
@@ -280,4 +247,5 @@ if (!process.argv[2] || /^[0-9]+$/.test(process.argv[2])) {
280
247
console . error ( 'Unrecognized command: ' + process . argv [ 2 ] ) ;
281
248
console . error ( 'Use `pokemon-showdown help` for help' ) ;
282
249
process . exit ( 1 ) ;
250
+ }
283
251
}
0 commit comments