1
1
import * as Joi from '@hapi/joi'
2
2
import path from 'path'
3
- import { parseOptions , optionsSchema , preSpawnSchema , spawnSchema } from './options'
3
+ import {
4
+ parseOptions ,
5
+ optionsSchema ,
6
+ preSpawnSchema ,
7
+ spawnSchema
8
+ } from './options'
4
9
5
10
const JQ_PATH = process . env . JQ_PATH || path . join ( __dirname , '..' , 'bin' , 'jq' )
6
11
@@ -11,7 +16,8 @@ export const INPUT_JSON_UNDEFINED_ERROR =
11
16
export const INPUT_STRING_ERROR =
12
17
'node-jq: invalid json string argument supplied'
13
18
14
- const NODE_JQ_ERROR_TEMPLATE = 'node-jq: invalid {#label} ' +
19
+ const NODE_JQ_ERROR_TEMPLATE =
20
+ 'node-jq: invalid {#label} ' +
15
21
'argument supplied{if(#label == "path" && #type == "json", " (not a .json file)", "")}' +
16
22
'{if(#label == "path" && #type == "path", " (not a valid path)", "")}: ' +
17
23
'"{if(#value != undefined, #value, "undefined")}"'
@@ -26,9 +32,21 @@ const messages = {
26
32
const validateArguments = ( filter , json , options ) => {
27
33
const context = { filter, json }
28
34
const validatedOptions = Joi . attempt ( options , optionsSchema )
29
- const validatedPreSpawn = Joi . attempt ( context , preSpawnSchema . tailor ( validatedOptions . input ) , { messages } )
30
- const validatedArgs = parseOptions ( validatedOptions , validatedPreSpawn . filter , validatedPreSpawn . json )
31
- const validatedSpawn = Joi . attempt ( { } , spawnSchema . tailor ( validatedOptions . input ) , { context : { ...validatedPreSpawn , options : validatedOptions } } )
35
+ const validatedPreSpawn = Joi . attempt (
36
+ context ,
37
+ preSpawnSchema . tailor ( validatedOptions . input ) ,
38
+ { messages }
39
+ )
40
+ const validatedArgs = parseOptions (
41
+ validatedOptions ,
42
+ validatedPreSpawn . filter ,
43
+ validatedPreSpawn . json
44
+ )
45
+ const validatedSpawn = Joi . attempt (
46
+ { } ,
47
+ spawnSchema . tailor ( validatedOptions . input ) ,
48
+ { context : { ...validatedPreSpawn , options : validatedOptions } }
49
+ )
32
50
33
51
if ( validatedOptions . input === 'file' ) {
34
52
return {
0 commit comments