UNPKG

2.53 kBJavaScriptView Raw
1/* @flow */
2'use strict'
3
4/* ::
5import type {
6 BlinkMRC,
7 BlinkMRCServer,
8 ServerCLIServiceConfig
9} from '../types.js'
10*/
11
12const chalk = require('chalk')
13const Table = require('cli-table2')
14const objectMerge = require('object-merge')
15
16const projectMeta = require('./utils/project-meta.js')
17const values = require('./values.js')
18
19function read (
20 cwd /* : string */
21) /* : Promise<BlinkMRCServer> */ {
22 return projectMeta.read(cwd)
23 .then((cfg) => cfg && cfg.server ? cfg.server : {})
24}
25
26function 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
65function 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
90function 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
100module.exports = {
101 read,
102 display,
103 write,
104 serverCLIServiceConfig
105}