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