internal/platform/product/intelllij_linters.go (133 lines of code) (raw):

/* * Copyright 2021-2024 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package product import "fmt" type IntellijLinterProperties struct { Linter ProductInfoJsonCode string FeedProductCode string VmOptionsEnv string ScriptName string } var ( JvmLinterProperties = IntellijLinterProperties{ Linter: JvmLinter, ProductInfoJsonCode: "IU", FeedProductCode: "IIU", VmOptionsEnv: "IDEA_VM_OPTIONS", ScriptName: "idea", } JvmCommunityLinterProperties = IntellijLinterProperties{ Linter: JvmCommunityLinter, ProductInfoJsonCode: "IC", FeedProductCode: "IIC", VmOptionsEnv: "IDEA_VM_OPTIONS", ScriptName: "idea", } AndroidLinterProperties = IntellijLinterProperties{ Linter: AndroidLinter, ProductInfoJsonCode: "IU", FeedProductCode: "", VmOptionsEnv: "IDEA_VM_OPTIONS", ScriptName: "idea", } AndroidCommunityLinterProperties = IntellijLinterProperties{ Linter: AndroidCommunityLinter, ProductInfoJsonCode: "IC", FeedProductCode: "", VmOptionsEnv: "IDEA_VM_OPTIONS", ScriptName: "idea", } PhpLinterProperties = IntellijLinterProperties{ Linter: PhpLinter, ProductInfoJsonCode: "PS", FeedProductCode: "PS", VmOptionsEnv: "PHPSTORM_VM_OPTIONS", ScriptName: "phpstorm", } PythonLinterProperties = IntellijLinterProperties{ Linter: PythonLinter, ProductInfoJsonCode: "PY", FeedProductCode: "PCP", VmOptionsEnv: "PYCHARM_VM_OPTIONS", ScriptName: "pycharm", } PythonLinterCommunityProperties = IntellijLinterProperties{ Linter: PythonCommunityLinter, ProductInfoJsonCode: "PC", FeedProductCode: "PCC", VmOptionsEnv: "PYCHARM_VM_OPTIONS", ScriptName: "pycharm", } JsLinterProperties = IntellijLinterProperties{ Linter: JsLinter, ProductInfoJsonCode: "WS", FeedProductCode: "WS", VmOptionsEnv: "WEBIDE_VM_OPTIONS", ScriptName: "webstorm", } NetLinterProperties = IntellijLinterProperties{ Linter: DotNetLinter, ProductInfoJsonCode: "RD", FeedProductCode: "RD", VmOptionsEnv: "RIDER_VM_OPTIONS", ScriptName: "rider", } RubyLinterProperties = IntellijLinterProperties{ Linter: RubyLinter, ProductInfoJsonCode: "RM", FeedProductCode: "RM", VmOptionsEnv: "RUBYMINE_VM_OPTIONS", ScriptName: "rubymine", } CppLinterProperties = IntellijLinterProperties{ Linter: CppLinter, ProductInfoJsonCode: "CL", FeedProductCode: "CL", VmOptionsEnv: "CLION_VM_OPTIONS", ScriptName: "clion", } GoLinterProperties = IntellijLinterProperties{ Linter: GoLinter, ProductInfoJsonCode: "GO", FeedProductCode: "GO", VmOptionsEnv: "GOLAND_VM_OPTIONS", ScriptName: "goland", } RustLinterProperties = IntellijLinterProperties{ Linter: RustLinter, ProductInfoJsonCode: "RR", FeedProductCode: "RR", VmOptionsEnv: "RUSTROVER_VM_OPTIONS", ScriptName: "rustrover", } AllLinterProperties = []IntellijLinterProperties{ JvmLinterProperties, JvmCommunityLinterProperties, AndroidLinterProperties, AndroidCommunityLinterProperties, PhpLinterProperties, PythonLinterProperties, PythonLinterCommunityProperties, JsLinterProperties, NetLinterProperties, RubyLinterProperties, CppLinterProperties, GoLinterProperties, RustLinterProperties, } ) func FindLinterProperties(linter Linter) *IntellijLinterProperties { for _, properties := range AllLinterProperties { if properties.Linter == linter { return &properties } } return nil } func FindLinterPropertiesByProductInfo(productInfoCode string) (*IntellijLinterProperties, error) { for _, properties := range AllLinterProperties { if properties.ProductInfoJsonCode == productInfoCode { return &properties, nil } } return nil, fmt.Errorf("linter for product code %s not found", productInfoCode) }