Implement a command-line interface to the running webserver, and a way to get/set...
[ndcode_site.git] / _config / get.mjs
1 #!/usr/bin/env node
2
3 import stream_buffers from 'stream-buffers'
4 import Problem from './Problem.mjs'
5 import Session from './Session.mjs'
6
7 if (process.argv.length < 3) {
8   console.log(
9     `usage: ${process.argv[0]} ${process.argv[1]} endpoint [args]`
10   )
11   process.exit(1)
12 }
13 let endpoint = process.argv[2]
14 let args = []
15 for (let i = 3; i < process.argv.length; ++i)
16   args.push(JSON.parse(process.argv[i]))
17
18 let session = new Session('session.json')
19 await session.load()
20
21 let result
22 try {
23   result = await session.api_call(endpoint, ...args)
24 }
25 catch (error) {
26   let problem = Problem.from(error)
27   console.error('problem:')
28   console.error('  title:', problem.title)
29   console.error('  detail:', problem.detail)
30   console.error('  status:', problem.status)
31
32   await session.save()
33   process.exit(1)
34 }
35 process.stdout.write(JSON.stringify(result, null, 2) + '\n')
36
37 await session.save()