1/* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16const fs = require('fs'); 17const path = require('path'); 18 19const { src, dest, ignore } = parseArgs(); 20copyJsonFiles(src, dest, ignore); 21 22function parseArgs() { 23 //argv 2: srcDir 3: destDir 4: --ignore 5: ignoreDir 24 const result = { src: process.argv[2], dest: process.argv[3], ignore: null}; 25 if (process.argv.length === 6 && process.argv[4] === '--ignore') { 26 result.ignore = path.join(process.argv[5]); 27 } 28 return result; 29} 30 31function copyJsonFiles(src, dest, ignore) { 32 if (src === ignore) { 33 return; 34 } 35 if (!fs.existsSync(dest)) { 36 fs.mkdirSync(dest, { recursive: true }); 37 } 38 39 const files = fs.readdirSync(src); 40 files.forEach(file => { 41 const srcFile = path.join(src, file); 42 const destFile = path.join(dest, file); 43 44 const stats = fs.statSync(srcFile); 45 if (stats.isDirectory()) { 46 copyJsonFiles(srcFile, destFile, ignore); 47 } else if (stats.isFile() && file.endsWith('.json')) { 48 fs.copyFileSync(srcFile, destFile); 49 } 50 }); 51}