mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-12-06 07:42:29 -05:00
Settings can now be taken from separate file with local override.
* Various settings in settings-nvr.js module * settings-nvr-local.js can override settings-nvr.js * settings-nvr-local is unchecked file * Both files can be straight maps, or functions returning maps * webpack env and args available to those functions
This commit is contained in:
51
webpack/NVRSettings.js
Normal file
51
webpack/NVRSettings.js
Normal file
@@ -0,0 +1,51 @@
|
||||
// vim: set et ts=2 sw=2:
|
||||
//
|
||||
const path = require('path');
|
||||
const Settings = require('./parts/Settings');
|
||||
|
||||
/**
|
||||
* Exports a sub-class of Settings specifically for the Moonfire NVR project.
|
||||
*
|
||||
* Gives us a simpler constructor that encapsulates the names of the expected
|
||||
* settings files.
|
||||
*
|
||||
* Provide some convenience member variables:
|
||||
* config {object} Map of the original settings configuration
|
||||
* values {object} The values map of the settings that were configured
|
||||
*
|
||||
* @type {NVRSettings}
|
||||
*/
|
||||
module.exports = class NVRSettings extends Settings {
|
||||
/**
|
||||
* Construct an NVRSettings object.
|
||||
*
|
||||
* This object will be a subclass of Settings, with some extra functionality.
|
||||
*
|
||||
* Initializes the super Settings object with the proper project root
|
||||
* and named settings files.
|
||||
*
|
||||
* @param {object} env "env" object passed to webpack config function
|
||||
* @param {object} args "args" object passed to webpack config function
|
||||
* @param {String} projectRoot Project root, defaults to '.' which is
|
||||
* usually the directory from which you run
|
||||
* npm or yarn.
|
||||
*/
|
||||
constructor(env, args, projectRoot = './') {
|
||||
super({
|
||||
projectRoot: path.resolve(projectRoot),
|
||||
primaryFile: 'settings-nvr.js',
|
||||
secondaryFile: 'settings-nvr-local.js',
|
||||
env: env,
|
||||
args: args,
|
||||
});
|
||||
const config = this.settings_config;
|
||||
// Add some absolute paths that might be relevant
|
||||
this.settings = Object.assign(this.settings, {
|
||||
_paths: {
|
||||
project_root: config.projectRoot,
|
||||
app_src_dir: path.join(config.projectRoot, this.settings.app_src_dir),
|
||||
dist_dir: path.join(config.projectRoot, this.settings.dist_dir),
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user