All files / lib/aws-operations mobile-yaml-ops.js

72.73% Statements 16/22
0% Branches 0/2
100% Functions 3/3
72.73% Lines 16/22
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                          22x 22x 22x 22x 22x   22x       54x 54x 54x                   54x       53x 53x 53x 53x         53x     22x      
/* 
 * 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 jsyaml = require('js-yaml')
const chalk = require('chalk')
const _ = require('lodash')
const util = require('util')
 
const ymalSchema = require('./mobile-yaml-schema.js')
 
function readYamlFileSync(ymlFilePath, throwError){
    let backendProject
    try{
        let yml = fs.readFileSync(ymlFilePath)
        backendProject = jsyaml.safeLoad(yml, { schema: ymalSchema.AWS_MOBILE_YAML_SCHEMA, noCompatMode: true, scalarType: 5, noRefs: true, skipInvalid: true })
    }catch(e){
        backendProject = undefined
        if (throwError) {
            console.log(chalk.red('error occured in parsing the yaml file:'))
            console.log(ymlFilePath)
            console.log(e)
            throw e
        }
    }
    return backendProject
}
 
function writeYamlFileSync(obj, ymlFilePath){
    obj = ymalSchema.trimObject(obj)
    let yml = jsyaml.safeDump(obj, { schema: ymalSchema.AWS_MOBILE_YAML_SCHEMA, lineWidth: 10000, noCompatMode: true, scalarType: 5, noRefs: true, skipInvalid: true })
    yml = dressYmlForMobileHub(yml)
    fs.writeFileSync(ymlFilePath, yml, 'utf8')
}
 
 
function dressYmlForMobileHub(yml){
    return '--- ' + yml.replace(/!<|>/g, '')
}
 
module.exports = {
    readYamlFileSync, 
    writeYamlFileSync
}