mirror of
https://github.com/Llewellynvdm/nativefier.git
synced 2024-12-23 02:28:55 +00:00
Allow nativefier to set process.env variables (#419)
This commit is contained in:
parent
fc7a213a87
commit
c9d2040327
@ -16,6 +16,13 @@ electronDownload();
|
||||
const APP_ARGS_FILE_PATH = path.join(__dirname, '..', 'nativefier.json');
|
||||
const appArgs = JSON.parse(fs.readFileSync(APP_ARGS_FILE_PATH, 'utf8'));
|
||||
|
||||
if (appArgs.processEnvs) {
|
||||
Object.keys(appArgs.processEnvs).forEach((key) => {
|
||||
/* eslint-env node */
|
||||
process.env[key] = appArgs.processEnvs[key];
|
||||
});
|
||||
}
|
||||
|
||||
let mainWindow;
|
||||
|
||||
if (typeof appArgs.flashPluginDir === 'string') {
|
||||
|
19
docs/api.md
19
docs/api.md
@ -408,6 +408,20 @@ Sets a default zoom factor to be used when the app is opened, defaults to `1.0`.
|
||||
|
||||
Prevents application from being run multiple times. If such an attempt occurs the already running instance is brought to front.
|
||||
|
||||
#### [processEnvs]
|
||||
|
||||
```
|
||||
--processEnvs <json-string>
|
||||
```
|
||||
|
||||
a JSON string of key/value pairs to be set as environment variables before any browser windows are opened.
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
nativefier <your-geolocation-enabled-website> --processEnvs '{"GOOGLE_API_KEY": "<your-google-api-key>"}'
|
||||
```
|
||||
|
||||
## Programmatic API
|
||||
|
||||
You can use the Nativefier programmatic API as well.
|
||||
@ -445,7 +459,10 @@ var options = {
|
||||
insecure: false,
|
||||
honest: false,
|
||||
zoom: 1.0,
|
||||
singleInstance: false
|
||||
singleInstance: false,
|
||||
processEnvs: {
|
||||
"GOOGLE_API_KEY": "<your-google-api-key>"
|
||||
}
|
||||
};
|
||||
|
||||
nativefier(options, function(error, appPath) {
|
||||
|
8840
package-lock.json
generated
8840
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -40,6 +40,7 @@ function selectAppArgs(options) {
|
||||
internalUrls: options.internalUrls,
|
||||
crashReporter: options.crashReporter,
|
||||
singleInstance: options.singleInstance,
|
||||
processEnvs: options.processEnvs,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -94,39 +94,39 @@ function removeInvalidOptions(options, param) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the `app-copyright` parameter from options if building for Windows while not on Windows
|
||||
* Removes the `appCopyright` parameter from options if building for Windows while not on Windows
|
||||
* and Wine is not installed
|
||||
* @param options
|
||||
*/
|
||||
function maybeNoAppCopyrightOption(options) {
|
||||
return removeInvalidOptions(options, 'app-copyright');
|
||||
return removeInvalidOptions(options, 'appCopyright');
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the `build-version` parameter from options if building for Windows while not on Windows
|
||||
* Removes the `buildVersion` parameter from options if building for Windows while not on Windows
|
||||
* and Wine is not installed
|
||||
* @param options
|
||||
*/
|
||||
function maybeNoBuildVersionOption(options) {
|
||||
return removeInvalidOptions(options, 'build-version');
|
||||
return removeInvalidOptions(options, 'buildVersion');
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the `app-version` parameter from options if building for Windows while not on Windows
|
||||
* Removes the `appVersion` parameter from options if building for Windows while not on Windows
|
||||
* and Wine is not installed
|
||||
* @param options
|
||||
*/
|
||||
function maybeNoAppVersionOption(options) {
|
||||
return removeInvalidOptions(options, 'app-version');
|
||||
return removeInvalidOptions(options, 'appVersion');
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the `version-string` parameter from options if building for Windows while not on Windows
|
||||
* Removes the `versionString` parameter from options if building for Windows while not on Windows
|
||||
* and Wine is not installed
|
||||
* @param options
|
||||
*/
|
||||
function maybeNoVersionStringOption(options) {
|
||||
return removeInvalidOptions(options, 'version-string');
|
||||
return removeInvalidOptions(options, 'versionString');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -16,6 +16,13 @@ function parseJson(val) {
|
||||
return JSON.parse(val);
|
||||
}
|
||||
|
||||
function getProcessEnvs(val) {
|
||||
if (!val) return {};
|
||||
const pEnv = {};
|
||||
pEnv.processEnvs = parseJson(val);
|
||||
return pEnv;
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
program
|
||||
.version(packageJson.version)
|
||||
@ -64,6 +71,7 @@ if (require.main === module) {
|
||||
.option('--internal-urls <value>', 'regular expression of URLs to consider "internal"; all other URLs will be opened in an external browser. (default: URLs on same second-level domain as app)')
|
||||
.option('--crash-reporter <value>', 'remote server URL to send crash reports')
|
||||
.option('--single-instance', 'allow only a single instance of the application')
|
||||
.option('--processEnvs <json-string>', 'a JSON string of key/value pairs to be set as environment variables before any browser windows are opened.', getProcessEnvs)
|
||||
.parse(process.argv);
|
||||
|
||||
if (!process.argv.slice(2).length) {
|
||||
|
@ -17,15 +17,6 @@ export default function (inpOptions) {
|
||||
const options = {
|
||||
dir: PLACEHOLDER_APP_DIR,
|
||||
name: inpOptions.name,
|
||||
'app-version': inpOptions.appVersion,
|
||||
'build-version': inpOptions.buildVersion,
|
||||
'app-copyright': inpOptions.appCopyright,
|
||||
'version-string': inpOptions.versionString,
|
||||
win32metadata: inpOptions.win32metadata || {
|
||||
ProductName: inpOptions.name,
|
||||
InternalName: inpOptions.name,
|
||||
FileDescription: inpOptions.name,
|
||||
},
|
||||
targetUrl: normalizeUrl(inpOptions.targetUrl),
|
||||
platform: inpOptions.platform || inferPlatform(),
|
||||
arch: inpOptions.arch || inferArch(),
|
||||
@ -65,6 +56,16 @@ export default function (inpOptions) {
|
||||
zoom: inpOptions.zoom || 1.0,
|
||||
internalUrls: inpOptions.internalUrls || null,
|
||||
singleInstance: inpOptions.singleInstance || false,
|
||||
appVersion: inpOptions.appVersion,
|
||||
buildVersion: inpOptions.buildVersion,
|
||||
appCopyright: inpOptions.appCopyright,
|
||||
versionString: inpOptions.versionString,
|
||||
win32metadata: inpOptions.win32metadata || {
|
||||
ProductName: inpOptions.name,
|
||||
InternalName: inpOptions.name,
|
||||
FileDescription: inpOptions.name,
|
||||
},
|
||||
processEnvs: inpOptions.processEnvs,
|
||||
};
|
||||
|
||||
if (options.verbose) {
|
||||
|
Loading…
Reference in New Issue
Block a user