Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

breakOnFirstError does not work in CLI #184

Open
itslenny opened this issue Apr 25, 2017 · 1 comment
Open

breakOnFirstError does not work in CLI #184

itslenny opened this issue Apr 25, 2017 · 1 comment

Comments

@itslenny
Copy link

I'm trying to disable break on first error using the cli z-schema command

Everything works fine with or without this flag, but when I try to set it to false it throws errors because it's trying to open false as a json file.

I tried both of these options:

z-schema --breakOnFirstError false ./some-schema.json ./some-data.json
z-schema --breakOnFirstError=false ./some-schema.json ./some-data.json

both resulted in this error:

{ Error: ENOENT: no such file or directory, open 'false'
    at Error (native)
    at Object.fs.openSync (fs.js:640:18)
    at Object.fs.readFileSync (fs.js:508:33)
    at readJson (.../AppData/Roaming/npm/node_modules/z-schema/bin/z-schema:54:18)
    at Object.<anonymous> (.../AppData/Roaming/npm/node_modules/z-schema/bin/z-schema:70:14)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3) errno: -2, code: 'ENOENT', syscall: 'open', path: 'false' }
.../AppData/Roaming/npm/node_modules/z-schema/bin/z-schema:57
        throw new Error("Couldn't read the file: " + fileName);
        ^

Error: Couldn't read the file: false
    at readJson (.../AppData/Roaming/npm/node_modules/z-schema/bin/z-schema:57:15)
    at Object.<anonymous> (.../AppData/Roaming/npm/node_modules/z-schema/bin/z-schema:70:14)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
@itslenny
Copy link
Author

itslenny commented Apr 25, 2017

I found a fix for it. I have it working locally. Not sure if I'll have time to do a PR or not, but here's the solution for reference:

in bin/z-schema

Line 33. Add the input <b> and a function to parse the string input into a boolean.

.option("--breakOnFirstError <b>", "stops validation as soon as an error is found, true by default but can be turned off", parseBoolean)

Line 42. explicitly check for an undefined type because false is obviously falsey but a valid input for this

if (typeof key !== 'undefined') {

Boolean parser (put this anywhere)

function parseBoolean(value) {
    return value && value.toLowerCase() !== 'true';
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants