Skip to content

Commit

Permalink
Merge pull request #904 from macbre/decamelize-options
Browse files Browse the repository at this point in the history
CLI - make sure options are not "camelCased" but "have-dashes" instead
  • Loading branch information
macbre committed Mar 12, 2021
2 parents 580273e + 69bee57 commit 5fb3f06
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 5 deletions.
5 changes: 4 additions & 1 deletion bin/phantomas.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"use strict";

const { program } = require("commander"),
{ decamelizeOptions } = require("./utils"),
phantomas = require(".."),
debug = require("debug")("phantomas:cli");

Expand Down Expand Up @@ -157,7 +158,9 @@ program

// parse it
program.parse(process.argv);
var options = program.opts();

// make sure options are not "camelCased" but "have-dashes" instead (issue #863)
var options = decamelizeOptions(program.opts());

debug("argv: %j", process.argv);
debug("opts: %j", options);
Expand Down
16 changes: 16 additions & 0 deletions bin/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const decamelize = require("decamelize");

function decamelizeOptions(options) {
// decamelize option names as returned by commander (see issue #863)
let decamelized = {};

for (const [key, value] of Object.entries(options)) {
decamelized[decamelize(key, { separator: "-" })] = value;
}

return decamelized;
}

module.exports = {
decamelizeOptions,
};
21 changes: 17 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"commander": "^7.0.0",
"csv-string": "^4.0.1",
"debug": "^4.1.1",
"decamelize": "^5.0.0",
"js-yaml": "^4.0.0",
"node-statsd": "0.1.1",
"puppeteer": "^8.0.0"
Expand Down
26 changes: 26 additions & 0 deletions test/bin-utils-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* Integration tests using server-start.sh script
*/
const vows = require("vows"),
assert = require("assert"),
{ decamelizeOptions } = require("../bin/utils");

vows
.describe("bin utils")
.addBatch({
decamelizeOptions: {
topic: function () {
return decamelizeOptions({
url: "http://foo.com",
userAgent: "foo/bar",
});
},
"should decamelize options": function (opts) {
assert.deepStrictEqual(opts, {
url: "http://foo.com",
"user-agent": "foo/bar",
});
},
},
})
.export(module);

0 comments on commit 5fb3f06

Please sign in to comment.