All files / lib/init-steps s5-setup-backend.js

82.14% Statements 23/28
75% Branches 3/4
76.92% Functions 10/13
82.14% Lines 23/28

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82                            2x 2x 2x                     3x 3x 3x   1x 1x   1x 1x   1x 1x         3x       1x 1x 1x           1x 1x 1x           1x 1x 1x                         2x      
/* 
 * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 *
 *     http://aws.amazon.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
*/
"use strict";
 
const backendCreate = require('../backend-create.js')
const backendImport = require('../backend-import.js')
const backendRetrieve = require('../backend-retrieve.js')
 
//if initInto.strategy is not set, the setup-backend step will not carry out any actions
// const strategy = [
//     'create', //use the default yaml to create a mobile project as the backend
//     'import', //if a valid backend spec is already in the project, create a mobile project based on it as the backend
//     'link', //if a mobile project id is in the command arguments, link to it as the backend
//     'conform', //just pull the latest from cloud, not update on the local backend
// ]
 
function run(initInfo){
    let result = initInfo
    console.log()
    switch(initInfo.strategy){
        case 'create':
            result = createBackend(initInfo)
        break
        case 'import': 
            result = importBackend(initInfo)
        break
        case 'link':
            result = linkBackend(initInfo)
        break
        case 'conform':
            result = pullBackend(initInfo)
        break
    }
    return result
}
 
function createBackend(initInfo){
    return new Promise((resolve, reject)=>{
        backendCreate.createBackendProject(initInfo.projectInfo, {useDefault: true, yesFlag: initInfo.yesFlag, syncToDevFlag: 2}, function(){
            resolve(initInfo) 
        })
    })
}
 
function importBackend(initInfo){
    return new Promise((resolve, reject)=>{
        backendImport.run(initInfo.projectInfo, {yesFlag: initInfo.yesFlag}, function(){
                resolve(initInfo) 
        })
    })
}
 
function linkBackend(initInfo){
    return new Promise((resolve, reject)=>{
        backendRetrieve.linkToBackend(initInfo.projectInfo, initInfo.mobileProjectID, 1,function(){
            resolve(initInfo) 
        })
    })
}
 
function pullBackend(initInfo){
    return new Promise((resolve, reject)=>{
        backendRetrieve.pullBackend(initInfo.projectInfo, initInfo.mobileProjectID, -1, function(){
            resolve(initInfo) 
        })
    })
}
 
module.exports = {
    run
}