All files / lib awsm-base-manager.js

81.82% Statements 27/33
25% Branches 1/4
75% Functions 3/4
81.82% Lines 27/33

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                          3x 3x 3x   3x 3x     1x 1x 1x           3x 3x 3x 3x 3x     3x                                   2x   2x   2x 2x 2x 2x 2x   2x 2x 2x 2x 2x     3x          
/* 
 * 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 moment = require('moment')
 
const pathManager = require('./utils/awsmobilejs-path-manager.js')
const awsmobilejsConstant = require('./utils/awsmobilejs-constant.js')
 
function placeAwsmobileBase(projectPath) {
  let backupAWSMobileJSDirPath = backupAwsmobileBase(projectPath)
  ensureFolderStructure(projectPath)
  return backupAWSMobileJSDirPath
}
 
function backupAwsmobileBase(projectPath){
  let backupAWSMobileJSDirPath
 
  const awsmobilejsDirPath = pathManager.getAWSMobileJSDirPath(projectPath)
  Eif(fs.existsSync(awsmobilejsDirPath)){
    const backupAWSMobileJSDirName =  awsmobilejsConstant.AWSMobileJSBackUpDirName + '-' + moment().format(awsmobilejsConstant.DateTimeFormatString)
    backupAWSMobileJSDirPath = path.normalize(path.join(projectPath, backupAWSMobileJSDirName))
    fs.renameSync(awsmobilejsDirPath, backupAWSMobileJSDirPath)
  }
 
  return backupAWSMobileJSDirPath
}
 
function cloneAWSMobileBase(projectPath){
	let backupAWSMobileJSDirPath
  
	const awsmobilejsDirPath = pathManager.getAWSMobileJSDirPath(projectPath)
	if(fs.existsSync(awsmobilejsDirPath)){
	  const backupAWSMobileJSDirName =  awsmobilejsConstant.AWSMobileJSBackUpDirName + '-' + moment().format(awsmobilejsConstant.DateTimeFormatString)
	  backupAWSMobileJSDirPath = path.normalize(path.join(projectPath, backupAWSMobileJSDirName))
	  fs.copySync(awsmobilejsDirPath, backupAWSMobileJSDirPath)
	}
  
	return backupAWSMobileJSDirPath
}
 
function ensureFolderStructure(projectPath){
  
  const awsmobilejsDirPath = pathManager.getAWSMobileJSDirPath(projectPath)
 
  fs.ensureDirSync(awsmobilejsDirPath)
 
  const dotAwsMobileDirPath = pathManager.getDotAWSMobileDirPath(projectPath)
  const infoSubDirPath = pathManager.getInfoDirPath(projectPath)
  const currentBackendInfoDirPath = pathManager.getCurrentBackendInfoDirPath(projectPath)
  const backendDirPath = pathManager.getBackendDirPath(projectPath)
  const backendBuildDirPath = pathManager.getBackendBuildDirPath(projectPath)
 
  fs.ensureDirSync(dotAwsMobileDirPath)
  fs.ensureDirSync(backendBuildDirPath)
  fs.ensureDirSync(infoSubDirPath)
  fs.ensureDirSync(currentBackendInfoDirPath)
  fs.ensureDirSync(backendDirPath)
}
 
module.exports = {
  placeAwsmobileBase, 
  backupAwsmobileBase,
  cloneAWSMobileBase,
  ensureFolderStructure
}