Add schema-based rules for package data of package index · arduino/arduino-lint@a60ecef (original) (raw)
`@@ -2925,8 +2925,248 @@ var configurations = []Type{
`
2925
2925
`ProjectType: projecttype.PackageIndex,
`
2926
2926
`SuperprojectType: projecttype.All,
`
2927
2927
`Category: "data",
`
2928
``
`-
Subcategory: "package",
`
``
2928
`+
Subcategory: "root",
`
2929
2929
`ID: "ID003",
`
``
2930
`+
Brief: "Additional properties in root",
`
``
2931
`+
Description: "",
`
``
2932
`+
MessageTemplate: "Unknown properties found in package index root.",
`
``
2933
`+
DisableModes: nil,
`
``
2934
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
2935
`+
InfoModes: nil,
`
``
2936
`+
WarningModes: nil,
`
``
2937
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
2938
`+
RuleFunction: rulefunction.PackageIndexAdditionalProperties,
`
``
2939
`+
},
`
``
2940
`+
{
`
``
2941
`+
ProjectType: projecttype.PackageIndex,
`
``
2942
`+
SuperprojectType: projecttype.All,
`
``
2943
`+
Category: "data",
`
``
2944
`+
Subcategory: "package",
`
``
2945
`+
ID: "IA001",
`
``
2946
`+
Brief: "packages[] missing",
`
``
2947
`+
Description: "",
`
``
2948
`+
MessageTemplate: "Missing packages property.",
`
``
2949
`+
DisableModes: nil,
`
``
2950
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
2951
`+
InfoModes: nil,
`
``
2952
`+
WarningModes: nil,
`
``
2953
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
2954
`+
RuleFunction: rulefunction.PackageIndexPackagesMissing,
`
``
2955
`+
},
`
``
2956
`+
{
`
``
2957
`+
ProjectType: projecttype.PackageIndex,
`
``
2958
`+
SuperprojectType: projecttype.All,
`
``
2959
`+
Category: "data",
`
``
2960
`+
Subcategory: "package",
`
``
2961
`+
ID: "IA002",
`
``
2962
`+
Brief: "Incorrect packages type",
`
``
2963
`+
Description: "",
`
``
2964
`+
MessageTemplate: "packages property has incorrect type.",
`
``
2965
`+
DisableModes: nil,
`
``
2966
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
2967
`+
InfoModes: nil,
`
``
2968
`+
WarningModes: nil,
`
``
2969
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
2970
`+
RuleFunction: rulefunction.PackageIndexPackagesIncorrectType,
`
``
2971
`+
},
`
``
2972
`+
{
`
``
2973
`+
ProjectType: projecttype.PackageIndex,
`
``
2974
`+
SuperprojectType: projecttype.All,
`
``
2975
`+
Category: "data",
`
``
2976
`+
Subcategory: "root",
`
``
2977
`+
ID: "IA003",
`
``
2978
`+
Brief: "Additional properties in packages",
`
``
2979
`+
Description: "",
`
``
2980
`+
MessageTemplate: "Unknown properties found in package(s): {{.}}",
`
``
2981
`+
DisableModes: nil,
`
``
2982
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
2983
`+
InfoModes: nil,
`
``
2984
`+
WarningModes: nil,
`
``
2985
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
2986
`+
RuleFunction: rulefunction.PackageIndexPackagesAdditionalProperties,
`
``
2987
`+
},
`
``
2988
`+
{
`
``
2989
`+
ProjectType: projecttype.PackageIndex,
`
``
2990
`+
SuperprojectType: projecttype.All,
`
``
2991
`+
Category: "data",
`
``
2992
`+
Subcategory: "package",
`
``
2993
`+
ID: "IA004",
`
``
2994
`+
Brief: "packages[].name missing",
`
``
2995
`+
Description: "",
`
``
2996
`+
MessageTemplate: "Missing packages[].name property in package(s): {{.}}",
`
``
2997
`+
DisableModes: nil,
`
``
2998
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
2999
`+
InfoModes: nil,
`
``
3000
`+
WarningModes: nil,
`
``
3001
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3002
`+
RuleFunction: rulefunction.PackageIndexPackagesNameMissing,
`
``
3003
`+
},
`
``
3004
`+
{
`
``
3005
`+
ProjectType: projecttype.PackageIndex,
`
``
3006
`+
SuperprojectType: projecttype.All,
`
``
3007
`+
Category: "data",
`
``
3008
`+
Subcategory: "package",
`
``
3009
`+
ID: "IA005",
`
``
3010
`+
Brief: "Incorrect packages[].name type",
`
``
3011
`+
Description: "The name value must be a string.",
`
``
3012
`+
MessageTemplate: "packages[].name property has incorrect type in package(s): {{.}}",
`
``
3013
`+
DisableModes: nil,
`
``
3014
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3015
`+
InfoModes: nil,
`
``
3016
`+
WarningModes: nil,
`
``
3017
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3018
`+
RuleFunction: rulefunction.PackageIndexPackagesNameIncorrectType,
`
``
3019
`+
},
`
``
3020
`+
{
`
``
3021
`+
ProjectType: projecttype.PackageIndex,
`
``
3022
`+
SuperprojectType: projecttype.All,
`
``
3023
`+
Category: "data",
`
``
3024
`+
Subcategory: "package",
`
``
3025
`+
ID: "IA006",
`
``
3026
`+
Brief: "packages[].name < min length",
`
``
3027
`+
Description: "",
`
``
3028
`+
MessageTemplate: "packages[].name value less than the minimum length in package(s): {{.}}",
`
``
3029
`+
DisableModes: nil,
`
``
3030
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3031
`+
InfoModes: nil,
`
``
3032
`+
WarningModes: nil,
`
``
3033
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3034
`+
RuleFunction: rulefunction.PackageIndexPackagesNameLTMinLength,
`
``
3035
`+
},
`
``
3036
`+
{
`
``
3037
`+
ProjectType: projecttype.PackageIndex,
`
``
3038
`+
SuperprojectType: projecttype.All,
`
``
3039
`+
Category: "data",
`
``
3040
`+
Subcategory: "package",
`
``
3041
`+
ID: "IA007",
`
``
3042
`+
Brief: "packages[].name is arduino",
`
``
3043
`+
Description: "Case insensitive.",
`
``
3044
`+
MessageTemplate: "packages[].name value is "arduino" in package {{.}}. This name is reserved for official packages.",
`
``
3045
`+
DisableModes: []rulemode.Type{rulemode.Official},
`
``
3046
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3047
`+
InfoModes: nil,
`
``
3048
`+
WarningModes: []rulemode.Type{rulemode.Permissive},
`
``
3049
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3050
`+
RuleFunction: rulefunction.PackageIndexPackagesNameIsArduino,
`
``
3051
`+
},
`
``
3052
`+
{
`
``
3053
`+
ProjectType: projecttype.PackageIndex,
`
``
3054
`+
SuperprojectType: projecttype.All,
`
``
3055
`+
Category: "data",
`
``
3056
`+
Subcategory: "package",
`
``
3057
`+
ID: "IA008",
`
``
3058
`+
Brief: "packages[].maintainer missing",
`
``
3059
`+
Description: "",
`
``
3060
`+
MessageTemplate: "Missing packages[].maintainer property in package(s): {{.}}",
`
``
3061
`+
DisableModes: nil,
`
``
3062
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3063
`+
InfoModes: nil,
`
``
3064
`+
WarningModes: nil,
`
``
3065
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3066
`+
RuleFunction: rulefunction.PackageIndexPackagesMaintainerMissing,
`
``
3067
`+
},
`
``
3068
`+
{
`
``
3069
`+
ProjectType: projecttype.PackageIndex,
`
``
3070
`+
SuperprojectType: projecttype.All,
`
``
3071
`+
Category: "data",
`
``
3072
`+
Subcategory: "package",
`
``
3073
`+
ID: "IA009",
`
``
3074
`+
Brief: "Incorrect packages[].maintainer type",
`
``
3075
`+
Description: "The maintainer value must be a string.",
`
``
3076
`+
MessageTemplate: "packages[].maintainer property has incorrect type in package(s): {{.}}",
`
``
3077
`+
DisableModes: nil,
`
``
3078
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3079
`+
InfoModes: nil,
`
``
3080
`+
WarningModes: nil,
`
``
3081
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3082
`+
RuleFunction: rulefunction.PackageIndexPackagesMaintainerIncorrectType,
`
``
3083
`+
},
`
``
3084
`+
{
`
``
3085
`+
ProjectType: projecttype.PackageIndex,
`
``
3086
`+
SuperprojectType: projecttype.All,
`
``
3087
`+
Category: "data",
`
``
3088
`+
Subcategory: "package",
`
``
3089
`+
ID: "IA010",
`
``
3090
`+
Brief: "packages[].maintainer < min length",
`
``
3091
`+
Description: "",
`
``
3092
`+
MessageTemplate: "packages[].maintainer value less than the minimum length in package(s): {{.}}",
`
``
3093
`+
DisableModes: nil,
`
``
3094
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3095
`+
InfoModes: nil,
`
``
3096
`+
WarningModes: nil,
`
``
3097
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3098
`+
RuleFunction: rulefunction.PackageIndexPackagesMaintainerLTMinLength,
`
``
3099
`+
},
`
``
3100
`+
{
`
``
3101
`+
ProjectType: projecttype.PackageIndex,
`
``
3102
`+
SuperprojectType: projecttype.All,
`
``
3103
`+
Category: "data",
`
``
3104
`+
Subcategory: "package",
`
``
3105
`+
ID: "IA011",
`
``
3106
`+
Brief: "packages[].maintainer starts with "arduino"",
`
``
3107
`+
Description: "Case insensitive.",
`
``
3108
`+
MessageTemplate: "packages[].maintainer value starts with "arduino" in package(s): {{.}}. 3rd party packages are not maintained by Arduino.",
`
``
3109
`+
DisableModes: []rulemode.Type{rulemode.Official},
`
``
3110
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3111
`+
InfoModes: nil,
`
``
3112
`+
WarningModes: []rulemode.Type{rulemode.Default},
`
``
3113
`+
ErrorModes: []rulemode.Type{rulemode.Strict},
`
``
3114
`+
RuleFunction: rulefunction.PackageIndexPackagesMaintainerStartsWithArduino,
`
``
3115
`+
},
`
``
3116
`+
{
`
``
3117
`+
ProjectType: projecttype.PackageIndex,
`
``
3118
`+
SuperprojectType: projecttype.All,
`
``
3119
`+
Category: "data",
`
``
3120
`+
Subcategory: "package",
`
``
3121
`+
ID: "IA012",
`
``
3122
`+
Brief: "packages[].websiteURL missing",
`
``
3123
`+
Description: "",
`
``
3124
`+
MessageTemplate: "Missing packages[].websiteURL property in package(s): {{.}}",
`
``
3125
`+
DisableModes: nil,
`
``
3126
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3127
`+
InfoModes: nil,
`
``
3128
`+
WarningModes: nil,
`
``
3129
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3130
`+
RuleFunction: rulefunction.PackageIndexPackagesWebsiteURLMissing,
`
``
3131
`+
},
`
``
3132
`+
{
`
``
3133
`+
ProjectType: projecttype.PackageIndex,
`
``
3134
`+
SuperprojectType: projecttype.All,
`
``
3135
`+
Category: "data",
`
``
3136
`+
Subcategory: "package",
`
``
3137
`+
ID: "IA013",
`
``
3138
`+
Brief: "Incorrect packages[].websiteURL type",
`
``
3139
`+
Description: "Must be a string.",
`
``
3140
`+
MessageTemplate: "packages[].websiteURL property has incorrect type in package(s): {{.}}",
`
``
3141
`+
DisableModes: nil,
`
``
3142
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3143
`+
InfoModes: nil,
`
``
3144
`+
WarningModes: nil,
`
``
3145
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3146
`+
RuleFunction: rulefunction.PackageIndexPackagesWebsiteURLIncorrectType,
`
``
3147
`+
},
`
``
3148
`+
{
`
``
3149
`+
ProjectType: projecttype.PackageIndex,
`
``
3150
`+
SuperprojectType: projecttype.All,
`
``
3151
`+
Category: "data",
`
``
3152
`+
Subcategory: "package",
`
``
3153
`+
ID: "IA014",
`
``
3154
`+
Brief: "Invalid packages[].websiteURL format",
`
``
3155
`+
Description: "",
`
``
3156
`+
MessageTemplate: "packages[].websiteURL property does not have a valid URL format in package(s): {{.}}",
`
``
3157
`+
DisableModes: nil,
`
``
3158
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3159
`+
InfoModes: nil,
`
``
3160
`+
WarningModes: nil,
`
``
3161
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3162
`+
RuleFunction: rulefunction.PackageIndexPackagesWebsiteURLInvalidFormat,
`
``
3163
`+
},
`
``
3164
`+
{
`
``
3165
`+
ProjectType: projecttype.PackageIndex,
`
``
3166
`+
SuperprojectType: projecttype.All,
`
``
3167
`+
Category: "data",
`
``
3168
`+
Subcategory: "package",
`
``
3169
`+
ID: "IA015",
`
2930
3170
`Brief: "dead packages[].websiteURL",
`
2931
3171
`Description: "",
`
2932
3172
`MessageTemplate: "Unable to load the packages[].websiteURL URL for package(s): {{.}}",
`
`@@ -2942,7 +3182,119 @@ var configurations = []Type{
`
2942
3182
`SuperprojectType: projecttype.All,
`
2943
3183
`Category: "data",
`
2944
3184
`Subcategory: "package",
`
2945
``
`-
ID: "ID004",
`
``
3185
`+
ID: "IA016",
`
``
3186
`+
Brief: "packages[].email missing",
`
``
3187
`+
Description: "",
`
``
3188
`+
MessageTemplate: "Missing packages[].email property in package(s): {{.}}",
`
``
3189
`+
DisableModes: nil,
`
``
3190
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3191
`+
InfoModes: nil,
`
``
3192
`+
WarningModes: nil,
`
``
3193
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3194
`+
RuleFunction: rulefunction.PackageIndexPackagesEmailMissing,
`
``
3195
`+
},
`
``
3196
`+
{
`
``
3197
`+
ProjectType: projecttype.PackageIndex,
`
``
3198
`+
SuperprojectType: projecttype.All,
`
``
3199
`+
Category: "data",
`
``
3200
`+
Subcategory: "package",
`
``
3201
`+
ID: "IA017",
`
``
3202
`+
Brief: "Incorrect packages[].email type",
`
``
3203
`+
Description: "Must be a string.",
`
``
3204
`+
MessageTemplate: "packages[].email property has incorrect type in package(s): {{.}}",
`
``
3205
`+
DisableModes: nil,
`
``
3206
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3207
`+
InfoModes: nil,
`
``
3208
`+
WarningModes: nil,
`
``
3209
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3210
`+
RuleFunction: rulefunction.PackageIndexPackagesEmailIncorrectType,
`
``
3211
`+
},
`
``
3212
`+
{
`
``
3213
`+
ProjectType: projecttype.PackageIndex,
`
``
3214
`+
SuperprojectType: projecttype.All,
`
``
3215
`+
Category: "data",
`
``
3216
`+
Subcategory: "package",
`
``
3217
`+
ID: "IA018",
`
``
3218
`+
Brief: "Incorrect packages[].help type",
`
``
3219
`+
Description: "Must be a string.",
`
``
3220
`+
MessageTemplate: "packages[].help property has incorrect type in package(s): {{.}}",
`
``
3221
`+
DisableModes: nil,
`
``
3222
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3223
`+
InfoModes: nil,
`
``
3224
`+
WarningModes: nil,
`
``
3225
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3226
`+
RuleFunction: rulefunction.PackageIndexPackagesHelpIncorrectType,
`
``
3227
`+
},
`
``
3228
`+
{
`
``
3229
`+
ProjectType: projecttype.PackageIndex,
`
``
3230
`+
SuperprojectType: projecttype.All,
`
``
3231
`+
Category: "data",
`
``
3232
`+
Subcategory: "root",
`
``
3233
`+
ID: "IA019",
`
``
3234
`+
Brief: "Additional properties in packages[].help",
`
``
3235
`+
Description: "",
`
``
3236
`+
MessageTemplate: "Unknown properties under packages[].help found in package(s): {{.}}",
`
``
3237
`+
DisableModes: nil,
`
``
3238
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3239
`+
InfoModes: nil,
`
``
3240
`+
WarningModes: nil,
`
``
3241
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3242
`+
RuleFunction: rulefunction.PackageIndexPackagesHelpAdditionalProperties,
`
``
3243
`+
},
`
``
3244
`+
{
`
``
3245
`+
ProjectType: projecttype.PackageIndex,
`
``
3246
`+
SuperprojectType: projecttype.All,
`
``
3247
`+
Category: "data",
`
``
3248
`+
Subcategory: "package",
`
``
3249
`+
ID: "IA020",
`
``
3250
`+
Brief: "packages[].help.online missing",
`
``
3251
`+
Description: "",
`
``
3252
`+
MessageTemplate: "Missing packages[].help.online property in package(s): {{.}}",
`
``
3253
`+
DisableModes: nil,
`
``
3254
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3255
`+
InfoModes: nil,
`
``
3256
`+
WarningModes: nil,
`
``
3257
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3258
`+
RuleFunction: rulefunction.PackageIndexPackagesHelpOnlineMissing,
`
``
3259
`+
},
`
``
3260
`+
{
`
``
3261
`+
ProjectType: projecttype.PackageIndex,
`
``
3262
`+
SuperprojectType: projecttype.All,
`
``
3263
`+
Category: "data",
`
``
3264
`+
Subcategory: "package",
`
``
3265
`+
ID: "IA021",
`
``
3266
`+
Brief: "Incorrect packages[].help.online type",
`
``
3267
`+
Description: "Must be a string.",
`
``
3268
`+
MessageTemplate: "packages[].help.online property has incorrect type in package(s): {{.}}",
`
``
3269
`+
DisableModes: nil,
`
``
3270
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3271
`+
InfoModes: nil,
`
``
3272
`+
WarningModes: nil,
`
``
3273
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3274
`+
RuleFunction: rulefunction.PackageIndexPackagesHelpOnlineIncorrectType,
`
``
3275
`+
},
`
``
3276
`+
{
`
``
3277
`+
ProjectType: projecttype.PackageIndex,
`
``
3278
`+
SuperprojectType: projecttype.All,
`
``
3279
`+
Category: "data",
`
``
3280
`+
Subcategory: "package",
`
``
3281
`+
ID: "IA022",
`
``
3282
`+
Brief: "Invalid packages[].help.online format",
`
``
3283
`+
Description: "",
`
``
3284
`+
MessageTemplate: "packages[].help.online property does not have a valid URL format in package(s): {{.}}",
`
``
3285
`+
DisableModes: nil,
`
``
3286
`+
EnableModes: []rulemode.Type{rulemode.Default},
`
``
3287
`+
InfoModes: nil,
`
``
3288
`+
WarningModes: nil,
`
``
3289
`+
ErrorModes: []rulemode.Type{rulemode.Default},
`
``
3290
`+
RuleFunction: rulefunction.PackageIndexPackagesHelpOnlineInvalidFormat,
`
``
3291
`+
},
`
``
3292
`+
{
`
``
3293
`+
ProjectType: projecttype.PackageIndex,
`
``
3294
`+
SuperprojectType: projecttype.All,
`
``
3295
`+
Category: "data",
`
``
3296
`+
Subcategory: "package",
`
``
3297
`+
ID: "IA023",
`
2946
3298
`Brief: "dead packages[].help.online",
`
2947
3299
`Description: "",
`
2948
3300
`MessageTemplate: "Unable to load the packages[].help.online URL for package(s): {{.}}",
`