Allow plugin to specify option with type `string` (#6219)
parent
545a712dc0
commit
f6bd59dfd3
|
@ -118,6 +118,9 @@ function optionInfoToSchema(optionInfo, { isCLI, optionInfos }) {
|
||||||
parameters.preprocess = value => Number(value);
|
parameters.preprocess = value => Number(value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "string":
|
||||||
|
SchemaConstructor = vnopts.StringSchema;
|
||||||
|
break;
|
||||||
case "choice":
|
case "choice":
|
||||||
SchemaConstructor = vnopts.ChoiceSchema;
|
SchemaConstructor = vnopts.ChoiceSchema;
|
||||||
parameters.choices = optionInfo.choices.map(choiceInfo =>
|
parameters.choices = optionInfo.choices.map(choiceInfo =>
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[` 1`] = `
|
||||||
|
"Snapshot Diff:
|
||||||
|
- First value
|
||||||
|
+ Second value
|
||||||
|
|
||||||
|
@@ -17,10 +17,12 @@
|
||||||
|
Defaults to avoid.
|
||||||
|
--no-bracket-spacing Do not print spaces between brackets.
|
||||||
|
--end-of-line <auto|lf|crlf|cr>
|
||||||
|
Which end of line characters to apply.
|
||||||
|
Defaults to auto.
|
||||||
|
+ --foo-string <string> foo description
|
||||||
|
+ Defaults to bar.
|
||||||
|
--html-whitespace-sensitivity <css|strict|ignore>
|
||||||
|
How to handle whitespaces in HTML.
|
||||||
|
Defaults to css.
|
||||||
|
--jsx-bracket-same-line Put > on the last line instead of at a new line.
|
||||||
|
Defaults to false."
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`show detailed external option with \`--help foo-string\` (stderr) 1`] = `""`;
|
||||||
|
|
||||||
|
exports[`show detailed external option with \`--help foo-string\` (stdout) 1`] = `
|
||||||
|
"--foo-string <string>
|
||||||
|
|
||||||
|
foo description
|
||||||
|
|
||||||
|
Default: bar
|
||||||
|
"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`show detailed external option with \`--help foo-string\` (write) 1`] = `Array []`;
|
|
@ -0,0 +1,56 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const runPrettier = require("../runPrettier");
|
||||||
|
const snapshotDiff = require("snapshot-diff");
|
||||||
|
|
||||||
|
describe("show external options with `--help`", () => {
|
||||||
|
const originalStdout = runPrettier("plugins/options-string", ["--help"])
|
||||||
|
.stdout;
|
||||||
|
const pluggedStdout = runPrettier("plugins/options-string", [
|
||||||
|
"--help",
|
||||||
|
"--plugin=./plugin"
|
||||||
|
]).stdout;
|
||||||
|
expect(snapshotDiff(originalStdout, pluggedStdout)).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("show detailed external option with `--help foo-string`", () => {
|
||||||
|
runPrettier("plugins/options-string", [
|
||||||
|
"--plugin=./plugin",
|
||||||
|
"--help",
|
||||||
|
"foo-string"
|
||||||
|
]).test({
|
||||||
|
status: 0
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("external options from CLI should work", () => {
|
||||||
|
runPrettier(
|
||||||
|
"plugins/options-string",
|
||||||
|
[
|
||||||
|
"--plugin=./plugin",
|
||||||
|
"--stdin-filepath",
|
||||||
|
"example.foo",
|
||||||
|
"--foo-string",
|
||||||
|
"baz"
|
||||||
|
],
|
||||||
|
{ input: "hello-world" }
|
||||||
|
).test({
|
||||||
|
stdout: "foo:baz",
|
||||||
|
stderr: "",
|
||||||
|
status: 0,
|
||||||
|
write: []
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("external options from config file should work", () => {
|
||||||
|
runPrettier(
|
||||||
|
"plugins/options-string",
|
||||||
|
["--config=./config.json", "--stdin-filepath", "example.foo"],
|
||||||
|
{ input: "hello-world" }
|
||||||
|
).test({
|
||||||
|
stdout: "foo:baz",
|
||||||
|
stderr: "",
|
||||||
|
status: 0,
|
||||||
|
write: []
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"plugins": ["./plugin"],
|
||||||
|
"fooString": "baz"
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
languages: [
|
||||||
|
{
|
||||||
|
name: "foo",
|
||||||
|
parsers: ["foo-parser"],
|
||||||
|
extensions: [".foo"],
|
||||||
|
since: "1.0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
options: {
|
||||||
|
fooString: {
|
||||||
|
type: "string",
|
||||||
|
default: "bar",
|
||||||
|
description: "foo description"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
parsers: {
|
||||||
|
"foo-parser": {
|
||||||
|
parse: text => ({ text }),
|
||||||
|
astFormat: "foo-ast"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
printers: {
|
||||||
|
"foo-ast": {
|
||||||
|
print: (path, options) =>
|
||||||
|
options.fooString ? `foo:${options.fooString}` : path.getValue().text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue