Skip to content

Commit a60ecef

Browse files
committed
Add schema-based rules for package data of package index
These are the JSON schema-based rules to check the root and package level data of package indexes.
1 parent ad3f06b commit a60ecef

File tree

26 files changed

+1497
-2
lines changed

26 files changed

+1497
-2
lines changed

internal/rule/ruleconfiguration/ruleconfiguration.go

Lines changed: 354 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2925,8 +2925,248 @@ var configurations = []Type{
29252925
ProjectType: projecttype.PackageIndex,
29262926
SuperprojectType: projecttype.All,
29272927
Category: "data",
2928-
Subcategory: "package",
2928+
Subcategory: "root",
29292929
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",
29303170
Brief: "dead packages[].websiteURL",
29313171
Description: "",
29323172
MessageTemplate: "Unable to load the packages[].websiteURL URL for package(s): {{.}}",
@@ -2942,7 +3182,119 @@ var configurations = []Type{
29423182
SuperprojectType: projecttype.All,
29433183
Category: "data",
29443184
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",
29463298
Brief: "dead packages[].help.online",
29473299
Description: "",
29483300
MessageTemplate: "Unable to load the packages[].help.online URL for package(s): {{.}}",

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy