All files / lib backend-delete.js

93.55% Statements 29/31
66.67% Branches 8/12
100% Functions 5/5
93.55% Lines 29/31
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 83                          1x 1x 1x   1x 1x 1x 1x 1x         2x 2x 2x 2x     2x               2x 2x                     2x 2x   2x       2x   2x 2x 2x 2x 2x 1x 1x   1x 1x           1x            
/* 
 * 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 chalk = require('chalk')
const inquirer = require('inquirer')
const ora = require('ora')
 
const projectInfoManager = require('./project-info-manager.js')
const backendInfoManager = require('./backend-operations/backend-info-manager.js')
const awsConfigManager = require('./aws-operations/aws-config-manager.js')
const awsClient = require('./aws-operations/aws-client.js')
const awsExceptionHandler = require('./aws-operations/aws-exception-handler.js')
 
let _projectInfo
 
function run(forceFlag){
    _projectInfo = projectInfoManager.getProjectInfo()
    Eif(_projectInfo){
        Eif(_projectInfo.BackendProjectID && _projectInfo.BackendProjectID.length > 0){
            Iif(forceFlag){
                deleteBackendProject()
            }else{
                inquirer.prompt([
                    {
                        type: 'confirm',
                        name: 'deleteBackend',
                        message: 'delete backend project ' + _projectInfo.BackendProjectName,
                        default: false
                    }
                ]).then(function (answers) {
                    Eif(answers.deleteBackend){
                        deleteBackendProject()
                    }
                })
            }
        }else{
            console.log(chalk.red('backend project unknown'))
        }
    }
} 
 
function deleteBackendProject(){
    awsConfigManager.checkAWSConfig(function(awsDetails){
        let mobile = awsClient.Mobile(awsDetails)
 
        let param = {
            projectId: _projectInfo.BackendProjectID
        }
 
        let backendProjectName = _projectInfo.BackendProjectName
 
        let spinner = ora('deleting backend project ' + backendProjectName)
        spinner.start()
        mobile.deleteProject(param, function(err,data){
            spinner.stop()
            if(err){
                console.log(chalk.red('delete mobile projection error '))
                awsExceptionHandler.handleMobileException(err)
            }else{
                backendInfoManager.clearBackendInfo(_projectInfo)
                console.log('backend project deleted: ' + chalk.blue(backendProjectName))
            }
        })
    })
}
 
module.exports = {
    run
}