@@ -7,11 +7,7 @@ import type {
7
7
8
8
import { HardhatError } from "@ignored/hardhat-vnext-errors" ;
9
9
10
- import {
11
- isArgumentNameValid ,
12
- isArgumentValueValid ,
13
- RESERVED_ARGUMENT_NAMES ,
14
- } from "../arguments.js" ;
10
+ import { validateArgumentName , validateArgumentValue } from "../arguments.js" ;
15
11
16
12
import { formatTaskId } from "./utils.js" ;
17
13
@@ -33,75 +29,70 @@ export function validateAction(action: unknown): void {
33
29
}
34
30
35
31
export function validateOption (
36
- optionDefinition : OptionDefinition ,
32
+ { name , type , defaultValue } : OptionDefinition ,
37
33
usedNames : Set < string > ,
38
34
taskId : string | string [ ] ,
39
35
) : void {
40
- validateArgumentName ( optionDefinition . name ) ;
36
+ validateArgumentName ( name ) ;
41
37
42
- if ( usedNames . has ( optionDefinition . name ) ) {
38
+ if ( usedNames . has ( name ) ) {
43
39
throw new HardhatError ( HardhatError . ERRORS . ARGUMENTS . DUPLICATED_NAME , {
44
- name : optionDefinition . name ,
40
+ name,
45
41
} ) ;
46
42
}
47
43
48
- validateArgumentValue ( {
49
- name : "defaultValue" ,
50
- value : optionDefinition . defaultValue ,
51
- expectedType : optionDefinition . type ,
52
- taskId : formatTaskId ( taskId ) ,
53
- } ) ;
44
+ validateTaskArgumentValue ( "defaultValue" , type , defaultValue , false , taskId ) ;
54
45
55
- usedNames . add ( optionDefinition . name ) ;
46
+ usedNames . add ( name ) ;
56
47
}
57
48
58
49
export function validatePositionalArgument (
59
- positionalArgDef : PositionalArgumentDefinition ,
50
+ { name , type , defaultValue , isVariadic } : PositionalArgumentDefinition ,
60
51
usedNames : Set < string > ,
61
52
taskId : string | string [ ] ,
62
53
lastArg ?: PositionalArgumentDefinition ,
63
54
) : void {
64
- validateArgumentName ( positionalArgDef . name ) ;
55
+ validateArgumentName ( name ) ;
65
56
66
- if ( usedNames . has ( positionalArgDef . name ) ) {
57
+ if ( usedNames . has ( name ) ) {
67
58
throw new HardhatError ( HardhatError . ERRORS . ARGUMENTS . DUPLICATED_NAME , {
68
- name : positionalArgDef . name ,
59
+ name,
69
60
} ) ;
70
61
}
71
62
72
- if ( positionalArgDef . defaultValue !== undefined ) {
73
- validateArgumentValue ( {
74
- name : "defaultValue" ,
75
- value : positionalArgDef . defaultValue ,
76
- isVariadic : positionalArgDef . isVariadic ,
77
- expectedType : positionalArgDef . type ,
78
- taskId : formatTaskId ( taskId ) ,
79
- } ) ;
63
+ if ( defaultValue !== undefined ) {
64
+ validateTaskArgumentValue (
65
+ "defaultValue" ,
66
+ type ,
67
+ defaultValue ,
68
+ isVariadic ,
69
+ taskId ,
70
+ ) ;
80
71
}
81
72
82
73
if ( lastArg !== undefined && lastArg . isVariadic ) {
83
74
throw new HardhatError (
84
75
HardhatError . ERRORS . TASK_DEFINITIONS . POSITIONAL_ARG_AFTER_VARIADIC ,
85
76
{
86
- name : positionalArgDef . name ,
77
+ name,
87
78
} ,
88
79
) ;
89
80
}
90
81
91
82
if (
92
83
lastArg !== undefined &&
93
84
lastArg . defaultValue !== undefined &&
94
- positionalArgDef . defaultValue === undefined
85
+ defaultValue === undefined
95
86
) {
96
87
throw new HardhatError (
97
88
HardhatError . ERRORS . TASK_DEFINITIONS . REQUIRED_ARG_AFTER_OPTIONAL ,
98
89
{
99
- name : positionalArgDef . name ,
90
+ name,
100
91
} ,
101
92
) ;
102
93
}
103
94
104
- usedNames . add ( positionalArgDef . name ) ;
95
+ usedNames . add ( name ) ;
105
96
}
106
97
107
98
const FILE_PROTOCOL_PATTERN = / ^ f i l e : \/ \/ .+ / ;
@@ -110,42 +101,33 @@ function isValidActionUrl(action: string): boolean {
110
101
return FILE_PROTOCOL_PATTERN . test ( action ) ;
111
102
}
112
103
113
- function validateArgumentName ( name : string ) : void {
114
- if ( ! isArgumentNameValid ( name ) ) {
115
- throw new HardhatError ( HardhatError . ERRORS . ARGUMENTS . INVALID_NAME , {
116
- name,
117
- } ) ;
118
- }
119
-
120
- if ( RESERVED_ARGUMENT_NAMES . has ( name ) ) {
121
- throw new HardhatError ( HardhatError . ERRORS . ARGUMENTS . RESERVED_NAME , {
122
- name,
123
- } ) ;
124
- }
125
- }
126
-
127
- function validateArgumentValue ( {
128
- name,
129
- expectedType,
130
- isVariadic = false ,
131
- value,
132
- taskId,
133
- } : {
134
- name : string ;
135
- expectedType : ArgumentType ;
136
- isVariadic ?: boolean ;
137
- value : ArgumentValue | ArgumentValue [ ] ;
138
- taskId : string | string [ ] ;
139
- } ) : void {
140
- if ( ! isArgumentValueValid ( expectedType , value , isVariadic ) ) {
141
- throw new HardhatError (
142
- HardhatError . ERRORS . TASK_DEFINITIONS . INVALID_VALUE_FOR_TYPE ,
143
- {
144
- value,
145
- name,
146
- type : expectedType ,
147
- task : formatTaskId ( taskId ) ,
148
- } ,
149
- ) ;
104
+ export function validateTaskArgumentValue (
105
+ name : string ,
106
+ expectedType : ArgumentType ,
107
+ value : ArgumentValue | ArgumentValue [ ] ,
108
+ isVariadic : boolean ,
109
+ taskId : string | string [ ] ,
110
+ ) : void {
111
+ try {
112
+ validateArgumentValue ( name , expectedType , value , isVariadic ) ;
113
+ } catch ( error ) {
114
+ if (
115
+ HardhatError . isHardhatError (
116
+ error ,
117
+ HardhatError . ERRORS . ARGUMENTS . INVALID_VALUE_FOR_TYPE ,
118
+ )
119
+ ) {
120
+ throw new HardhatError (
121
+ HardhatError . ERRORS . TASK_DEFINITIONS . INVALID_VALUE_FOR_TYPE ,
122
+ {
123
+ name,
124
+ type : expectedType ,
125
+ value,
126
+ task : formatTaskId ( taskId ) ,
127
+ } ,
128
+ ) ;
129
+ }
130
+
131
+ throw error ;
150
132
}
151
133
}
0 commit comments