-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.ts
96 lines (87 loc) · 2.18 KB
/
cli.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import debug from 'debug'
import { autoStartServer, startServer, stopServer } from './server'
import { preloadModel } from './client'
import { defaultConfig } from './config'
let config = {
debug: false,
port: defaultConfig.port,
image: defaultConfig.image,
}
for (let i = 2; i < process.argv.length; i++) {
let arg = process.argv[i]
switch (arg) {
case '--port': {
i++
let port = +process.argv[i]
if (!port) {
console.error('Error: Invalid port')
process.exit(1)
}
config.port = port
break
}
case '--debug': {
config.debug = true
break
}
case '--image': {
i++
let image = process.argv[i]
if (!image) {
console.error('Error: missing docker image name')
process.exit(1)
}
config.image = image
break
}
case '--version':
case '-v': {
let pkg = require('./package.json')
console.log(pkg.name + ' v' + pkg.version)
process.exit(0)
}
case '--help':
case '-h': {
let cmd = 'easynmt-server'
console.log(
`
Usage: ${cmd} [options]
Options:
--port <port> | Set the port number (default: 24080)
--image <name> | Set the Docker image name (default: 'easynmt/api:2.0-cpu')
--container <name> | Set the Docker container name (default: 'docker-easynmt' or existing instance's name)
--debug | Enable debug mode
-v, --version | Display the version number
-h, --help | Show this help message
Examples:
${cmd}
${cmd} --image 'easynmt/api:2.0.2-cuda11.3' --port 8100 --debug
`.trim(),
)
process.exit(0)
}
}
}
let log = debug('app-cli')
log.enabled = config.debug
async function main() {
if (config.debug) {
log('clean up existing server')
stopServer(config)
log('starting server')
let server = startServer(config)
await server.ready
log('server ready')
} else {
await autoStartServer(config)
}
log('preloading zh -> english model')
await preloadModel({
source_lang: 'zh',
target_lang: 'en',
debug: config.debug,
})
log('preloaded zh -> english model')
console.log('ready.')
}
main().catch(e => console.error(e))