Skip to content

Commit 0447d4f

Browse files
slusarzsirainen
authored andcommitted
settings: Enforce default definitions for certain setting types
1 parent f62f288 commit 0447d4f

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

lib/data/settings.data.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,14 @@ async function normalizeSettings(settings) {
9393
if (!v2) {
9494
throw new Error("Incorrect value type for " + k)
9595
}
96+
97+
if (v2.default_required && (v.default === undefined)) {
98+
throw new Error("Default value missing for " + k)
99+
}
100+
if (v2.enum_required && !v.values_enum) {
101+
throw new Error("Enum array missing for " + k)
102+
}
103+
96104
v2.url = md.renderInline(v2.url)
97105

98106
if (v2.no_default) {

lib/settings.js

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,64 @@
22
export const setting_types = {
33
BOOLEAN: {
44
label: 'Boolean',
5-
url: '[[link,settings_types_boolean]]'
5+
url: '[[link,settings_types_boolean]]',
6+
default_required: true,
67
},
78
IPADDR: {
89
label: 'IP Address(es)',
9-
url: '[[link,settings_types_ip]]'
10+
url: '[[link,settings_types_ip]]',
11+
// Default: empty
1012
},
1113
SIZE: {
1214
label: 'Size',
13-
url: '[[link,settings_types_size]]'
15+
url: '[[link,settings_types_size]]',
16+
default_required: true,
1417
},
1518
STRING: {
1619
label: 'String',
1720
url: '[[link,settings_types_string]]'
21+
// Default: empty
1822
},
1923
STRING_NOVAR: {
2024
label: 'String Without Variables',
2125
url: '[[link,settings_types_string_novar]]'
26+
// Default: empty
2227
},
2328
/* This is a String entry, with specific allowable values. */
2429
ENUM: {
2530
label: 'String',
26-
url: '[[link,settings_types_string]]'
31+
url: '[[link,settings_types_string]]',
32+
enum_required: true,
2733
},
2834
TIME: {
2935
label: 'Time',
30-
url: '[[link,settings_types_time]]'
36+
url: '[[link,settings_types_time]]',
37+
default_required: true,
3138
},
3239
TIME_MSECS: {
3340
label: 'Time (milliseconds)',
34-
url: '[[link,settings_types_time_msecs]]'
41+
url: '[[link,settings_types_time_msecs]]',
42+
default_required: true,
3543
},
3644
UINT: {
3745
label: 'Unsigned Integer',
38-
url: '[[link,settings_types_uint]]'
46+
url: '[[link,settings_types_uint]]',
47+
default_required: true,
3948
},
4049
OCTAL_UINT: {
4150
label: 'Octal Unsigned Integer',
42-
url: '[[link,settings_types_octal_uint]]'
51+
url: '[[link,settings_types_octal_uint]]',
52+
default_required: true,
4353
},
4454
URL: {
4555
label: 'URL',
4656
url: '[[link,settings_types_url]]'
57+
// Default: empty
4758
},
4859
FILE: {
4960
label: 'File',
5061
url: '[[link,settings_types_file]]'
62+
// Default: empty
5163
},
5264
NAMED_FILTER: {
5365
label: 'Named Filter',
@@ -57,17 +69,21 @@ export const setting_types = {
5769
NAMED_LIST_FILTER: {
5870
label: 'Named List Filter',
5971
url: '[[link,settings_types_named_list_filter]]'
72+
// Default: empty
6073
},
6174
STRLIST: {
6275
label: 'String List',
6376
url: '[[link,settings_types_strlist]]'
77+
// Default: empty
6478
},
6579
BOOLLIST: {
6680
label: 'Boolean List',
6781
url: '[[link,settings_types_boollist]]'
82+
// Default: empty
6883
},
6984
IN_PORT: {
7085
label: 'Port Number',
71-
url: '[[link,settings_types_in_port]]'
86+
url: '[[link,settings_types_in_port]]',
87+
default_required: true,
7288
}
7389
}

0 commit comments

Comments
 (0)