# all files / red/runtime/storage/localfilesystem/ settings.js

95% Statements 19/20
75% Branches 3/4
100% Functions 5/5
95% Lines 19/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
    49
    50
    51
    52
    53

    1×
    1×
    1×

    1×
    1×

    1×
    1×

    1×

    20×
    20×

    21×
    21×
    21×
    5×
    5×

    1×

    17×

    19×

    19×

     /**
     * Copyright JS Foundation and other contributors, http://js.foundation
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     * http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License 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.
     **/

    var when = require('when');
    var fs = require('fs-extra');
    var fspath = require("path");

    var log = require("../../log");
    var util = require("./util");

    var globalSettingsFile;
    var settings;

    module.exports = {
        init: function(_settings) {
            settings = _settings;
            globalSettingsFile = fspath.join(settings.userDir,".config.json");
        },
        getSettings: function() {
            return when.promise(function(resolve,reject) {
                fs.readFile(globalSettingsFile,'utf8',function(err,data) {
                    if (!err) {
                        try {
                            return resolve(util.parseJSON(data));
                        } catch(err2) {
                            log.trace("Corrupted config detected - resetting");
                        }
                    }
                    return resolve({});
                })
            })
        },
        saveSettings: function(newSettings) {
            Iif (settings.readOnly) {
                return when.resolve();
            }
            return util.writeFile(globalSettingsFile,JSON.stringify(newSettings,null,1));
        }
    }