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_ciconst fs = require('fs'); 1761847f8eSopenharmony_ciconst path = require('path'); 1861847f8eSopenharmony_ciconst urlPrefix = 'https://gitee.com/openharmony/utils_system_resources/raw/'; 1961847f8eSopenharmony_ciconst urlSuffix = '/systemres/main/config.json'; 2061847f8eSopenharmony_ci 2161847f8eSopenharmony_ciexports.checkJSDoc = function (node, sourceFile, fileName) { 2261847f8eSopenharmony_ci const checkLegality = require('./src/check_legality'); 2361847f8eSopenharmony_ci return checkLegality.checkJsDocOfCurrentNode(node, sourceFile, fileName, false, false); 2461847f8eSopenharmony_ci}; 2561847f8eSopenharmony_ci 2661847f8eSopenharmony_ciexports.initEnv = function (version) { 2761847f8eSopenharmony_ci const { checkOption } = require('./src/utils'); 2861847f8eSopenharmony_ci return new Promise((resolve, reject) => { 2961847f8eSopenharmony_ci const permissionName = getPermissionName(version); 3061847f8eSopenharmony_ci const permissionConfig = getLocalPermissionConfig(permissionName); 3161847f8eSopenharmony_ci if (permissionConfig) { 3261847f8eSopenharmony_ci checkOption.permissionContent = permissionConfig; 3361847f8eSopenharmony_ci resolve(); 3461847f8eSopenharmony_ci return; 3561847f8eSopenharmony_ci } 3661847f8eSopenharmony_ci const workingBranch = version || 'mas' + 'ter'; 3761847f8eSopenharmony_ci const url = `${urlPrefix}${workingBranch}${urlSuffix}`; 3861847f8eSopenharmony_ci updatePermissionConfig(url, (content) => { 3961847f8eSopenharmony_ci if (content) { 4061847f8eSopenharmony_ci checkOption.permissionContent = content; 4161847f8eSopenharmony_ci savePermissionConfig(content, permissionName); 4261847f8eSopenharmony_ci } 4361847f8eSopenharmony_ci resolve(); 4461847f8eSopenharmony_ci }); 4561847f8eSopenharmony_ci }); 4661847f8eSopenharmony_ci}; 4761847f8eSopenharmony_ci 4861847f8eSopenharmony_cifunction updatePermissionConfig(url, callback) { 4961847f8eSopenharmony_ci let requestText; 5061847f8eSopenharmony_ci const https = require('https'); 5161847f8eSopenharmony_ci const request = https.get(url, { timeout: 2000 }, (res) => { 5261847f8eSopenharmony_ci res.on('data', (chunk) => { 5361847f8eSopenharmony_ci if (typeof chunk === 'string') { 5461847f8eSopenharmony_ci requestText = chunk; 5561847f8eSopenharmony_ci } else { 5661847f8eSopenharmony_ci const dataStr = new TextDecoder().decode(chunk); 5761847f8eSopenharmony_ci requestText = requestText ? (requestText + dataStr) : dataStr; 5861847f8eSopenharmony_ci } 5961847f8eSopenharmony_ci }); 6061847f8eSopenharmony_ci }).on('error', () => { 6161847f8eSopenharmony_ci console.warn('use the default permission list.'); 6261847f8eSopenharmony_ci }).on('close', () => { 6361847f8eSopenharmony_ci callback(requestText); 6461847f8eSopenharmony_ci }).on('timeout', () => { 6561847f8eSopenharmony_ci request.destroy(); 6661847f8eSopenharmony_ci }); 6761847f8eSopenharmony_ci} 6861847f8eSopenharmony_ci 6961847f8eSopenharmony_cifunction getLocalPermissionConfig(name) { 7061847f8eSopenharmony_ci const localPermissionFile = path.resolve(__dirname, name); 7161847f8eSopenharmony_ci if (fs.existsSync(localPermissionFile)) { 7261847f8eSopenharmony_ci const content = fs.readFileSync(localPermissionFile); 7361847f8eSopenharmony_ci try { 7461847f8eSopenharmony_ci JSON.parse(content); 7561847f8eSopenharmony_ci return content; 7661847f8eSopenharmony_ci } catch (err) { 7761847f8eSopenharmony_ci console.warn(`parse error ${localPermissionFile}`); 7861847f8eSopenharmony_ci } 7961847f8eSopenharmony_ci } 8061847f8eSopenharmony_ci return undefined; 8161847f8eSopenharmony_ci} 8261847f8eSopenharmony_ci 8361847f8eSopenharmony_cifunction savePermissionConfig(content, name) { 8461847f8eSopenharmony_ci const localPermissionFile = path.resolve(__dirname, name); 8561847f8eSopenharmony_ci fs.writeFileSync(localPermissionFile, content); 8661847f8eSopenharmony_ci console.log(`update permission configuration to ${localPermissionFile}`); 8761847f8eSopenharmony_ci} 8861847f8eSopenharmony_ci 8961847f8eSopenharmony_cifunction getPermissionName(version) { 9061847f8eSopenharmony_ci return `permissions_${version}.config.json`; 9161847f8eSopenharmony_ci} 92