161847f8eSopenharmony_ci/* 261847f8eSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 461847f8eSopenharmony_ci * you may not use this file except in compliance with the License. 561847f8eSopenharmony_ci * You may obtain a copy of the License at 661847f8eSopenharmony_ci * 761847f8eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 861847f8eSopenharmony_ci * 961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and 1361847f8eSopenharmony_ci * limitations under the License. 1461847f8eSopenharmony_ci */ 1561847f8eSopenharmony_ci 1661847f8eSopenharmony_ciimport { JSDocModifierImpl } from './core/entry'; 1761847f8eSopenharmony_ciimport type { IJSDocModifier } from './core/typedef'; 1861847f8eSopenharmony_ciimport { ConstantValue, StringResourceId } from './utils/constant'; 1961847f8eSopenharmony_ciimport { StringResource, StringUtils } from './utils/stringUtils'; 2061847f8eSopenharmony_ci 2161847f8eSopenharmony_cifunction main(): void { 2261847f8eSopenharmony_ci checkEnvVersion(); 2361847f8eSopenharmony_ci const jsDocModifier: IJSDocModifier = new JSDocModifierImpl(); 2461847f8eSopenharmony_ci jsDocModifier.start(); 2561847f8eSopenharmony_ci} 2661847f8eSopenharmony_ci 2761847f8eSopenharmony_cifunction checkEnvVersion(): void { 2861847f8eSopenharmony_ci const version = process.version; 2961847f8eSopenharmony_ci const versionRegExp = /^v(\d+)\.(\d+)\.(\d+).*/; 3061847f8eSopenharmony_ci const matchArray = version.match(versionRegExp); 3161847f8eSopenharmony_ci const requiredVersions = [ConstantValue.MAJOR_V, ConstantValue.MINOR_V, ConstantValue.PATCH_V]; 3261847f8eSopenharmony_ci let showVersionWarning = true; 3361847f8eSopenharmony_ci const MAX_LENGTH = 4; 3461847f8eSopenharmony_ci const LOOP_MAX_LENGTH = 3; 3561847f8eSopenharmony_ci if (matchArray && matchArray.length === MAX_LENGTH) { 3661847f8eSopenharmony_ci for (let index = 0; index < LOOP_MAX_LENGTH; index++) { 3761847f8eSopenharmony_ci const curV = Number(matchArray[index + 1]); 3861847f8eSopenharmony_ci const requiredV = requiredVersions[index]; 3961847f8eSopenharmony_ci if (curV > requiredV || curV < requiredV) { 4061847f8eSopenharmony_ci showVersionWarning = curV > requiredV; 4161847f8eSopenharmony_ci break; 4261847f8eSopenharmony_ci } else { 4361847f8eSopenharmony_ci continue; 4461847f8eSopenharmony_ci } 4561847f8eSopenharmony_ci } 4661847f8eSopenharmony_ci } 4761847f8eSopenharmony_ci if (showVersionWarning) { 4861847f8eSopenharmony_ci return; 4961847f8eSopenharmony_ci } 5061847f8eSopenharmony_ci let hintMessage = StringResource.getString(StringResourceId.VERSION_HINT); 5161847f8eSopenharmony_ci hintMessage = StringUtils.formatString(hintMessage, requiredVersions); 5261847f8eSopenharmony_ci console.warn('jsdoc-tool:', hintMessage); 5361847f8eSopenharmony_ci} 5461847f8eSopenharmony_ci 5561847f8eSopenharmony_cimain();