# Copyright (c) 2025 Huawei Device Co., Ltd.
# 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
#
# http://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.
import("//build/ohos.gni")
linter_version = "1.0.0"
npm_path = "//prebuilts/build-tools/common/nodejs/current/bin/npm"
typescript_dir = get_label_info("//third_party/typescript:build_typescript",
"target_out_dir")
action("build_linter") {
sources = [
"./package.json",
"./src/cli/CommandLineParser.ts",
"./src/cli/ConsoleLogger.ts",
"./src/cli/LinterCLI.ts",
"./src/cli/LoggerImpl.ts",
"./src/cli/main.ts",
"./src/lib/BaseTypeScriptLinter.ts",
"./src/lib/CommandLineOptions.ts",
"./src/lib/CookBookMsg.ts",
"./src/lib/FaultAttrs.ts",
"./src/lib/FaultDesc.ts",
"./src/lib/IncrementalLintInfo.ts",
"./src/lib/InteropTypescriptLinter.ts",
"./src/lib/IsEtsFileCallback.ts",
"./src/lib/IsFileFromModuleCallback.ts",
"./src/lib/LintRunResult.ts",
"./src/lib/LinterConfig.ts",
"./src/lib/LinterOptions.ts",
"./src/lib/LinterRunner.ts",
"./src/lib/Logger.ts",
"./src/lib/ProblemInfo.ts",
"./src/lib/ProblemSeverity.ts",
"./src/lib/Problems.ts",
"./src/lib/TypeScriptLinter.ts",
"./src/lib/TypeScriptLinterConfig.ts",
"./src/lib/autofixes/AutofixTitles.ts",
"./src/lib/autofixes/Autofixer.ts",
"./src/lib/autofixes/QuasiEditor.ts",
"./src/lib/autofixes/ReportAutofixCallback.ts",
"./src/lib/autofixes/SymbolCache.ts",
"./src/lib/statistics/FileProblemStatistics.ts",
"./src/lib/statistics/FileStatistics.ts",
"./src/lib/statistics/ProjectStatistics.ts",
"./src/lib/statistics/StatisticsLogger.ts",
"./src/lib/ts-compiler/Compiler.ts",
"./src/lib/ts-compiler/FormTscOptions.ts",
"./src/lib/ts-compiler/ResolveSdks.ts",
"./src/lib/ts-diagnostics/GetTscDiagnostics.ts",
"./src/lib/ts-diagnostics/TSCCompiledProgram.ts",
"./src/lib/ts-diagnostics/TransformTscDiagnostics.ts",
"./src/lib/ts-diagnostics/TypeScriptDiagnosticsExtractor.ts",
"./src/lib/utils/TsUtils.ts",
"./src/lib/utils/consts/ArktsIgnorePaths.ts",
"./src/lib/utils/consts/BuiltinGenericConstructor.ts",
"./src/lib/utils/consts/DefaultDecoratorWhitelist.ts",
"./src/lib/utils/consts/ESObject.ts",
"./src/lib/utils/consts/ExtendedBaseTypes.ts",
"./src/lib/utils/consts/ExtensionName.ts",
"./src/lib/utils/consts/FunctionHasNoReturnErrorCode.ts",
"./src/lib/utils/consts/InValidIndentifierKeywords.ts",
"./src/lib/utils/consts/LikeFunction.ts",
"./src/lib/utils/consts/LimitedStandardUtilityTypes.ts",
"./src/lib/utils/consts/LimitedStdAPI.ts",
"./src/lib/utils/consts/NonInitializablePropertyDecorators.ts",
"./src/lib/utils/consts/NonReturnFunctionDecorators.ts",
"./src/lib/utils/consts/PropertyHasNoInitializerErrorCode.ts",
"./src/lib/utils/consts/SendableAPI.ts",
"./src/lib/utils/consts/SharedModuleAPI.ts",
"./src/lib/utils/consts/StandardLibraries.ts",
"./src/lib/utils/consts/StdClassVariableDeclarations.ts",
"./src/lib/utils/consts/SupportedDetsIndexableTypes.ts",
"./src/lib/utils/consts/TsSuffix.ts",
"./src/lib/utils/consts/TypedArrays.ts",
"./src/lib/utils/consts/VersionInfo.ts",
"./src/lib/utils/functions/ContainsThis.ts",
"./src/lib/utils/functions/DiagnosticChecker.ts",
"./src/lib/utils/functions/ForEachNodeInSubtree.ts",
"./src/lib/utils/functions/GetScriptKind.ts",
"./src/lib/utils/functions/HasPredecessor.ts",
"./src/lib/utils/functions/IsStdLibrary.ts",
"./src/lib/utils/functions/IsStruct.ts",
"./src/lib/utils/functions/LibraryTypeCallDiagnosticChecker.ts",
"./src/lib/utils/functions/LogTscDiagnostic.ts",
"./src/lib/utils/functions/MergeArrayMaps.ts",
"./src/lib/utils/functions/NameGenerator.ts",
"./src/lib/utils/functions/PathHelper.ts",
"./src/lib/utils/functions/SupportedStdCallAPI.ts",
"./src/lib/utils/functions/identiferUseInValueContext.ts",
"./src/lib/utils/functions/isAssignmentOperator.ts",
"./src/lib/utils/functions/isIntrinsicObjectType.ts",
]
script = "build_linter.py"
deps = [ "../../arkguard:build_arkguard" ]
args = [
"--source-path",
rebase_path(get_path_info(".", "abspath")),
"--output-path",
rebase_path("$target_gen_dir"),
"--npm",
rebase_path(npm_path),
"--typescript",
rebase_path("${typescript_dir}/ohos-typescript-4.9.5-r4.tgz"),
"--version",
linter_version,
]
outputs = [ "$target_gen_dir" ]
}
ohos_copy("ets2panda_build_linter") {
deps = [ ":build_linter" ]
sources = [ rebase_path("$target_gen_dir") ]
outputs = [ target_out_dir + "/$target_name" ]
module_source_dir = target_out_dir + "/$target_name"
module_install_name = ""
part_name = "ets_frontend"
subsystem_name = "arkcompiler"
}