All files / lib/aws-operations mobile-api-content-generator.js

35% Statements 7/20
0% Branches 0/2
0% Functions 0/2
35% Lines 7/20
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                          11x 11x 11x   11x 11x 11x                                               11x        
/* 
 * 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 fs = require('fs-extra')
const path = require('path')
const archiver = require('archiver')
 
const awsMobileYamlOps = require('./mobile-yaml-ops.js')
const pathManager = require('../utils/awsmobilejs-path-manager.js')
const awsmobileJSConstant = require('../utils/awsmobilejs-constant.js')
 
function generateContents(projectInfo, backendProjectSpec, callback) {
    let tempContentYmlFilePath = pathManager.getBackendBuildYamlFilePath(projectInfo.ProjectPath)
    let contentZipFilePath = pathManager.getBackendContentZipFilePath(projectInfo.ProjectPath)
    let zipInternalFilePath = 'awsmobile-cli-project/' + awsmobileJSConstant.BackendProjectYamlFileName
    
    awsMobileYamlOps.writeYamlFileSync(backendProjectSpec, tempContentYmlFilePath)
 
    let output = fs.createWriteStream(contentZipFilePath)
    
    output.on('close', function() {
      fs.removeSync(tempContentYmlFilePath)
      if(callback){
        callback()
      }
    })
 
    let zip = archiver.create('zip', {})
    zip.pipe(output)
    zip.append(fs.createReadStream(tempContentYmlFilePath), {name: zipInternalFilePath})
    zip.finalize()
}
 
module.exports = {
  generateContents
}