1 |
|
2 | 'use strict'
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | const chalk = require('chalk')
|
13 | const Table = require('cli-table2')
|
14 | const objectMerge = require('object-merge')
|
15 |
|
16 | const projectMeta = require('./utils/project-meta.js')
|
17 | const values = require('./values.js')
|
18 |
|
19 | function read (
|
20 | cwd /* : string */
|
21 | ) /* : Promise<BlinkMRCServer> */ {
|
22 | return projectMeta.read(cwd)
|
23 | .then((cfg) => cfg && cfg.server ? cfg.server : {})
|
24 | }
|
25 |
|
26 | function display (
|
27 | logger /* : typeof console */,
|
28 | cwd /* : string */,
|
29 | env /* : ?string */
|
30 | ) /* : Promise<void> */ {
|
31 | return read(cwd)
|
32 | .then((meta) => meta.project ? meta : Promise.reject(new Error()))
|
33 | .catch(() => Promise.reject(new Error('Scope has not been set yet, see --help for information on how to set scope.')))
|
34 | .then((meta) => {
|
35 | var table = new Table()
|
36 | table.push(
|
37 | [{
|
38 | content: chalk.bold('Scope'),
|
39 | hAlign: 'center',
|
40 | colSpan: 2
|
41 | }],
|
42 | [
|
43 | chalk.grey('Project'),
|
44 | meta.project
|
45 | ],
|
46 | [
|
47 | chalk.grey('Region'),
|
48 | meta.region
|
49 | ],
|
50 | [
|
51 | chalk.grey('Timeout'),
|
52 | meta.timeout || values.DEFAULT_TIMEOUT_SECONDS
|
53 | ]
|
54 | )
|
55 | if (env) {
|
56 | table.push([
|
57 | chalk.grey('Environment'),
|
58 | env
|
59 | ])
|
60 | }
|
61 | logger.log(table.toString())
|
62 | })
|
63 | }
|
64 |
|
65 | function write (
|
66 | cwd /* : string */,
|
67 | meta /* : BlinkMRCServer */
|
68 | ) /* : Promise<BlinkMRCServer> */ {
|
69 | meta = meta || {}
|
70 | if (!meta.project) {
|
71 | return Promise.reject(new Error('meta.project was not defined.'))
|
72 | }
|
73 |
|
74 | return projectMeta.write(cwd, (config) => {
|
75 | const service = config && config.server && config.server.service ? config.server.service : {}
|
76 | return objectMerge(config, {
|
77 | server: {
|
78 | project: meta.project,
|
79 | region: meta.region,
|
80 | service: {
|
81 | bucket: service.bucket || values.SERVER_CLI_SERVICE_S3_BUCKET,
|
82 | origin: service.origin || values.SERVER_CLI_SERVICE_ORIGIN
|
83 | }
|
84 | }
|
85 | })
|
86 | })
|
87 | .then((cfg) => cfg.server || {})
|
88 | }
|
89 |
|
90 | function serverCLIServiceConfig (
|
91 | config /* : BlinkMRCServer */
|
92 | ) /* : ServerCLIServiceConfig */ {
|
93 | const serviceCliService = config.service || {}
|
94 | return {
|
95 | bucket: serviceCliService.bucket || values.SERVER_CLI_SERVICE_S3_BUCKET,
|
96 | origin: serviceCliService.origin || values.SERVER_CLI_SERVICE_ORIGIN
|
97 | }
|
98 | }
|
99 |
|
100 | module.exports = {
|
101 | read,
|
102 | display,
|
103 | write,
|
104 | serverCLIServiceConfig
|
105 | }
|