UNPKG

2.06 kBJavaScriptView Raw
1/* @flow */
2'use strict'
3
4const ora = require('ora')
5const chalk = require('chalk')
6const upload = require('@blinkmobile/aws-s3').upload
7
8const confirm = require('../lib/utils/confirm.js')
9const bucketParams = require('../lib/s3-bucket-params.js')
10
11const s3Factory = require('../lib/s3-bucket-factory.js')
12
13function getFQDN (
14 project /* : string */,
15 env /* : string */
16) /* : string */ {
17 if (env.toLowerCase() === 'prod') {
18 return project
19 }
20 const arr = project.split('.')
21 arr[0] += `-${env}`
22 return arr.join('.')
23}
24
25module.exports = function (
26 input /* : string[] */,
27 flags /* : Object */
28) /* : Promise<void> */ {
29 return bucketParams.read(flags.cwd)
30 .then((bucketDetails) => {
31 const fqdn = getFQDN(bucketDetails.params.Bucket, flags.env)
32 return confirm(flags.force, flags.env)
33 .then((confirmation) => {
34 if (!confirmation) {
35 return
36 }
37
38 const spinner = ora({spinner: 'dots', text: 'Uploading to CDN'})
39
40 return s3Factory(bucketDetails)
41 .then((s3) => {
42 const uploadParams = {
43 s3,
44 skip: flags.skip,
45 prune: flags.prune,
46 cwd: flags.cwd,
47 bucketPathPrefix: flags.env
48 }
49
50 spinner.start()
51 const task = upload(uploadParams)
52 task.on('skipped', (fileName) => {
53 spinner.warn(`skipped: ${fileName}`)
54 })
55 task.on('uploaded', (fileName) => {
56 spinner.succeed(`uploaded: ${fileName}`)
57 })
58 task.on('deleted', (fileName) => {
59 spinner.warn(`deleted: ${fileName}`)
60 })
61 return task.promise
62 })
63 .then(() => {
64 spinner.succeed('Deployment complete - Origin: ' + chalk.bold(`https://${fqdn}`))
65 })
66 .catch((err) => {
67 spinner.fail('Deployment failed!')
68 return Promise.reject(err)
69 })
70 })
71 })
72}