You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
792 B
42 lines
792 B
// Native
|
|
const { homedir } = require('os');
|
|
const path = require('path');
|
|
|
|
// Packages
|
|
const fs = require('fs-promise');
|
|
|
|
let file = process.env.NOW_JSON
|
|
? path.resolve(process.env.NOW_JSON)
|
|
: path.resolve(homedir(), '.now.json');
|
|
|
|
function setConfigFile(nowjson) {
|
|
file = path.resolve(nowjson);
|
|
}
|
|
|
|
function read() {
|
|
let existing = null;
|
|
try {
|
|
existing = fs.readFileSync(file, 'utf8');
|
|
existing = JSON.parse(existing);
|
|
} catch (err) {}
|
|
return existing || {};
|
|
}
|
|
|
|
/**
|
|
* Merges the `data` object onto the
|
|
* JSON config stored in `.now.json`.
|
|
*
|
|
* (atomic)
|
|
* @param {Object} data
|
|
*/
|
|
|
|
function merge(data) {
|
|
const cfg = Object.assign({}, read(), data);
|
|
fs.writeFileSync(file, JSON.stringify(cfg, null, 2));
|
|
}
|
|
|
|
module.exports = {
|
|
setConfigFile,
|
|
read,
|
|
merge
|
|
};
|
|
|