UNPKG

@northscaler/config-custom-environment-variables-generator

Version:

Generator of config/custom-environment-variables.json File for config-Based Projects

122 lines (107 loc) 12.2 kB
#!/usr/bin/env node 'use strict'; const stdio = require('stdio'); const eol = require('os').EOL; const fs = require('fs'); const os = require('os'); const generator = require('./generator'); const { parseFormats } = require('./cli-support'); const DEFAULT_PRETTY = 2; const DEFAULT_VERBOSE = false; const errln = function (text) { process.stderr.write(text + eol); }; const opts = stdio.getopt({ separator: { key: 's', description: 'Separator.', args: 1, mandatory: false, default: generator.DEFAULT_SEPARATOR }, prefix: { key: 'p', description: 'Prefix; use an at-sign (\'@\') for your application\'s name.', args: 1, mandatory: false, default: generator.DEFAULT_PREFIX }, noprefix: { key: 'n', description: 'Do not use a prefix; supercedes --prefix.', args: 0, mandatory: false, default: generator.DEFAULT_NO_PREFIX }, casing: { key: 'c', args: 1, description: 'Casing: "' + generator.CASING_UPPER + '", "' + generator.CASING_LOWER + '", or "' + generator.CASING_UNCHANGED + '".', mandatory: false, default: generator.DEFAULT_CASING }, pretty: { key: 'f', args: 1, description: 'Format prettily with given number of spaces for indentation.', mandatory: false, default: DEFAULT_PRETTY }, empties: { key: 'e', args: 0, description: 'If present, preserves sections that wouldn\'t have any environment variables. Functions are always skipped.', mandatory: false, default: generator.DEFAULT_EMPTIES }, verbose: { key: 'v', args: 0, description: 'Be verbose.', mandatory: false, default: DEFAULT_VERBOSE }, 'format-key': { key: 'k', description: '(multiple allowed) give in the form "path.to.key=format", where format is one of the allowed config __format values', args: '*', multiple: true, required: false }, _meta_: { minArgs: 0, maxArgs: 1, description: 'File to write to; omit for stdout.' } }); if (opts.verbose) { errln('Options: ' + JSON.stringify(opts, null, 2)); } let formats = opts['format-key'] || []; if (!Array.isArray(formats)) formats = [formats]; const vars = generator.generate(require('config'), { noPrefix: opts.noprefix, prefix: opts.prefix, separator: opts.separator, casing: opts.casing, empties: opts.empties, formats: parseFormats(formats) }); let indentation = parseInt(opts.pretty); if (isNaN(indentation)) { process.stderr.write(`WARN: could not parse '--pretty ${opts.pretty}'; reverting to ${DEFAULT_PRETTY}${os.EOL}`); indentation = DEFAULT_PRETTY; } const json = JSON.stringify(vars, null, indentation); let file = ''; if (opts.args) { file = opts.args[0].trim(); } if (file) { fs.writeFileSync(file, json); } else { process.stdout.write(json); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9jbGkuanMiXSwibmFtZXMiOlsic3RkaW8iLCJyZXF1aXJlIiwiZW9sIiwiRU9MIiwiZnMiLCJvcyIsImdlbmVyYXRvciIsInBhcnNlRm9ybWF0cyIsIkRFRkFVTFRfUFJFVFRZIiwiREVGQVVMVF9WRVJCT1NFIiwiZXJybG4iLCJ0ZXh0IiwicHJvY2VzcyIsInN0ZGVyciIsIndyaXRlIiwib3B0cyIsImdldG9wdCIsInNlcGFyYXRvciIsImtleSIsImRlc2NyaXB0aW9uIiwiYXJncyIsIm1hbmRhdG9yeSIsImRlZmF1bHQiLCJERUZBVUxUX1NFUEFSQVRPUiIsInByZWZpeCIsIkRFRkFVTFRfUFJFRklYIiwibm9wcmVmaXgiLCJERUZBVUxUX05PX1BSRUZJWCIsImNhc2luZyIsIkNBU0lOR19VUFBFUiIsIkNBU0lOR19MT1dFUiIsIkNBU0lOR19VTkNIQU5HRUQiLCJERUZBVUxUX0NBU0lORyIsInByZXR0eSIsImVtcHRpZXMiLCJERUZBVUxUX0VNUFRJRVMiLCJ2ZXJib3NlIiwibXVsdGlwbGUiLCJyZXF1aXJlZCIsIl9tZXRhXyIsIm1pbkFyZ3MiLCJtYXhBcmdzIiwiSlNPTiIsInN0cmluZ2lmeSIsImZvcm1hdHMiLCJBcnJheSIsImlzQXJyYXkiLCJ2YXJzIiwiZ2VuZXJhdGUiLCJub1ByZWZpeCIsImluZGVudGF0aW9uIiwicGFyc2VJbnQiLCJpc05hTiIsImpzb24iLCJmaWxlIiwidHJpbSIsIndyaXRlRmlsZVN5bmMiLCJzdGRvdXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEsTUFBTUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsT0FBRCxDQUFyQjs7QUFDQSxNQUFNQyxHQUFHLEdBQUdELE9BQU8sQ0FBQyxJQUFELENBQVAsQ0FBY0UsR0FBMUI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHSCxPQUFPLENBQUMsSUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxFQUFFLEdBQUdKLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1LLFNBQVMs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bUJBQWtCekIsY0FBZSxHQUFFSCxFQUFFLENBQUNGLEdBQUksRUFBOUc7QUFDQStDLEVBQUFBLFdBQVcsR0FBRzFDLGNBQWQ7QUFDRDs7QUFFRCxNQUFNNkMsSUFBSSxHQUFHWCxJQUFJLENBQUNDLFNBQUwsQ0FBZUksSUFBZixFQUFxQixJQUFyQixFQUEyQkcsV0FBM0IsQ0FBYjtBQUVBLElBQUlJLElBQUksR0FBRyxFQUFYOztBQUNBLElBQUl2QyxJQUFJLENBQUNLLElBQVQsRUFBZTtBQUNia0MsRUFBQUEsSUFBSSxHQUFHdkMsSUFBSSxDQUFDSyxJQUFMLENBQVUsQ0FBVixFQUFhbUMsSUFBYixFQUFQO0FBQ0Q7O0FBRUQsSUFBSUQsSUFBSixFQUFVO0FBQ1JsRCxFQUFBQSxFQUFFLENBQUNvRCxhQUFILENBQWlCRixJQUFqQixFQUF1QkQsSUFBdkI7QUFDRCxDQUZELE1BRU87QUFDTHpDLEVBQUFBLE9BQU8sQ0FBQzZDLE1BQVIsQ0FBZTNDLEtBQWYsQ0FBcUJ1QyxJQUFyQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHN0ZGlvID0gcmVxdWlyZSgnc3RkaW8nKVxuY29uc3QgZW9sID0gcmVxdWlyZSgnb3MnKS5FT0xcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpXG5jb25zdCBnZW5lcmF0b3IgPSByZXF1aXJlKCcuL2dlbmVyYXRvcicpXG5jb25zdCB7IHBhcnNlRm9ybWF0cyB9ID0gcmVxdWlyZSgnLi9jbGktc3VwcG9ydCcpXG5cbmNvbnN0IERFRkFVTFRfUFJFVFRZID0gMlxuY29uc3QgREVGQVVMVF9WRVJCT1NFID0gZmFsc2VcblxuY29uc3QgZXJybG4gPSBmdW5jdGlvbiAodGV4dCkge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZSh0ZXh0ICsgZW9sKVxufVxuXG5jb25zdCBvcHRzID0gc3RkaW8uZ2V0b3B0KHtcbiAgc2VwYXJhdG9yOiB7XG4gICAga2V5OiAncycsXG4gICAgZGVzY3JpcHRpb246ICdTZXBhcmF0b3IuJyxcbiAgICBhcmdzOiAxLFxuICAgIG1hbmRhdG9yeTogZmFsc2UsXG4gICAgZGVmYXVsdDogZ2VuZXJhdG9yLkRFRkFVTFRfU0VQQVJBVE9SXG4gIH0sXG4gIHByZWZpeDoge1xuICAgIGtleTogJ3AnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJlZml4OyB1c2UgYW4gYXQtc2lnbiAoXFwnQFxcJykgZm9yIHlvdXIgYXBwbGljYXRpb25cXCdzIG5hbWUuJyxcbiAgICBhcmdzOiAxLFxuICAgIG1hbmRhdG9yeTogZmFsc2UsXG4gICAgZGVmYXVsdDogZ2VuZXJhdG9yLkRFRkFVTFRfUFJFRklYXG4gIH0sXG4gIG5vcHJlZml4OiB7XG4gICAga2V5OiAnbicsXG4gICAgZGVzY3JpcHRpb246ICdEbyBub3QgdXNlIGEgcHJlZml4OyBzdXBlcmNlZGVzIC0tcHJlZml4LicsXG4gICAgYXJnczogMCxcbiAgICBtYW5kYXRvcnk6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGdlbmVyYXRvci5ERUZBVUxUX05PX1BSRUZJWFxuICB9LFxuICBjYXNpbmc6IHtcbiAgICBrZXk6ICdjJyxcbiAgICBhcmdzOiAxLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2FzaW5nOiBcIicgKyBnZW5lcmF0b3IuQ0FTSU5HX1VQUEVSICsgJ1wiLCBcIicgKyBnZW5lcmF0b3IuQ0FTSU5HX0xPV0VSICsgJ1wiLCBvciBcIicgKyBnZW5lcmF0b3IuQ0FTSU5HX1VOQ0hBTkdFRCArICdcIi4nLFxuICAgIG1hbmRhdG9yeTogZmFsc2UsXG4gICAgZGVmYXVsdDogZ2VuZXJhdG9yLkRFRkFVTFRfQ0FTSU5HXG4gIH0sXG4gIHByZXR0eToge1xuICAgIGtleTogJ2YnLFxuICAgIGFyZ3M6IDEsXG4gICAgZGVzY3JpcHRpb246ICdGb3JtYXQgcHJldHRpbHkgd2l0aCBnaXZlbiBudW1iZXIgb2Ygc3BhY2VzIGZvciBpbmRlbnRhdGlvbi4nLFxuICAgIG1hbmRhdG9yeTogZmFsc2UsXG4gICAgZGVmYXVsdDogREVGQVVMVF9QUkVUVFlcbiAgfSxcbiAgZW1wdGllczoge1xuICAgIGtleTogJ2UnLFxuICAgIGFyZ3M6IDAsXG4gICAgZGVzY3JpcHRpb246ICdJZiBwcmVzZW50LCBwcmVzZXJ2ZXMgc2VjdGlvbnMgdGhhdCB3b3VsZG5cXCd0IGhhdmUgYW55IGVudmlyb25tZW50IHZhcmlhYmxlcy4gIEZ1bmN0aW9ucyBhcmUgYWx3YXlzIHNraXBwZWQuJyxcbiAgICBtYW5kYXRvcnk6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGdlbmVyYXRvci5ERUZBVUxUX0VNUFRJRVNcbiAgfSxcbiAgdmVyYm9zZToge1xuICAgIGtleTogJ3YnLFxuICAgIGFyZ3M6IDAsXG4gICAgZGVzY3JpcHRpb246ICdCZSB2ZXJib3NlLicsXG4gICAgbWFuZGF0b3J5OiBmYWxzZSxcbiAgICBkZWZhdWx0OiBERUZBVUxUX1ZFUkJPU0VcbiAgfSxcbiAgJ2Zvcm1hdC1rZXknOiB7XG4gICAga2V5OiAnaycsXG4gICAgZGVzY3JpcHRpb246ICcobXVsdGlwbGUgYWxsb3dlZCkgZ2l2ZSBpbiB0aGUgZm9ybSBcInBhdGgudG8ua2V5PWZvcm1hdFwiLCB3aGVyZSBmb3JtYXQgaXMgb25lIG9mIHRoZSBhbGxvd2VkIGNvbmZpZyBfX2Zvcm1hdCB2YWx1ZXMnLFxuICAgIGFyZ3M6ICcqJyxcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICByZXF1aXJlZDogZmFsc2VcbiAgfSxcbiAgX21ldGFfOiB7XG4gICAgbWluQXJnczogMCxcbiAgICBtYXhBcmdzOiAxLFxuICAgIGRlc2NyaXB0aW9uOiAnRmlsZSB0byB3cml0ZSB0bzsgb21pdCBmb3Igc3Rkb3V0LidcbiAgfVxufSlcblxuaWYgKG9wdHMudmVyYm9zZSkge1xuICBlcnJsbignT3B0aW9uczogJyArIEpTT04uc3RyaW5naWZ5KG9wdHMsIG51bGwsIDIpKVxufVxuXG5sZXQgZm9ybWF0cyA9IG9wdHNbJ2Zvcm1hdC1rZXknXSB8fCBbXVxuaWYgKCFBcnJheS5pc0FycmF5KGZvcm1hdHMpKSBmb3JtYXRzID0gW2Zvcm1hdHNdXG5cbmNvbnN0IHZhcnMgPSBnZW5lcmF0b3IuZ2VuZXJhdGUocmVxdWlyZSgnY29uZmlnJyksIHtcbiAgbm9QcmVmaXg6IG9wdHMubm9wcmVmaXgsXG4gIHByZWZpeDogb3B0cy5wcmVmaXgsXG4gIHNlcGFyYXRvcjogb3B0cy5zZXBhcmF0b3IsXG4gIGNhc2luZzogb3B0cy5jYXNpbmcsXG4gIGVtcHRpZXM6IG9wdHMuZW1wdGllcyxcbiAgZm9ybWF0czogcGFyc2VGb3JtYXRzKGZvcm1hdHMpXG59KVxuXG5sZXQgaW5kZW50YXRpb24gPSBwYXJzZUludChvcHRzLnByZXR0eSlcbmlmIChpc05hTihpbmRlbnRhdGlvbikpIHtcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYFdBUk46IGNvdWxkIG5vdCBwYXJzZSAnLS1wcmV0dHkgJHtvcHRzLnByZXR0eX0nOyByZXZlcnRpbmcgdG8gJHtERUZBVUxUX1BSRVRUWX0ke29zLkVPTH1gKVxuICBpbmRlbnRhdGlvbiA9IERFRkFVTFRfUFJFVFRZXG59XG5cbmNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YXJzLCBudWxsLCBpbmRlbnRhdGlvbilcblxubGV0IGZpbGUgPSAnJ1xuaWYgKG9wdHMuYXJncykge1xuICBmaWxlID0gb3B0cy5hcmdzWzBdLnRyaW0oKVxufVxuXG5pZiAoZmlsZSkge1xuICBmcy53cml0ZUZpbGVTeW5jKGZpbGUsIGpzb24pXG59IGVsc2Uge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZShqc29uKVxufVxuIl19