13920e296Sopenharmony_ci/* 23920e296Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 33920e296Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43920e296Sopenharmony_ci * you may not use this file except in compliance with the License. 53920e296Sopenharmony_ci * You may obtain a copy of the License at 63920e296Sopenharmony_ci * 73920e296Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83920e296Sopenharmony_ci * 93920e296Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103920e296Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113920e296Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123920e296Sopenharmony_ci * See the License for the specific language governing permissions and 133920e296Sopenharmony_ci * limitations under the License. 143920e296Sopenharmony_ci */ 153920e296Sopenharmony_ci 163920e296Sopenharmony_ci#include "resource_merge.h" 173920e296Sopenharmony_ci#include "cmd_parser.h" 183920e296Sopenharmony_ci#include "file_entry.h" 193920e296Sopenharmony_ci 203920e296Sopenharmony_cinamespace OHOS { 213920e296Sopenharmony_cinamespace Global { 223920e296Sopenharmony_cinamespace Restool { 233920e296Sopenharmony_ciusing namespace std; 243920e296Sopenharmony_ciconst vector<ConfigParser::ModuleType> ResourceMerge::ORDERS = { 253920e296Sopenharmony_ci ConfigParser::ModuleType::NONE, 263920e296Sopenharmony_ci ConfigParser::ModuleType::ENTRY, 273920e296Sopenharmony_ci ConfigParser::ModuleType::FEATURE, 283920e296Sopenharmony_ci ConfigParser::ModuleType::SHARED, 293920e296Sopenharmony_ci ConfigParser::ModuleType::HAR 303920e296Sopenharmony_ci}; 313920e296Sopenharmony_ci 323920e296Sopenharmony_ciResourceMerge::ResourceMerge() 333920e296Sopenharmony_ci{ 343920e296Sopenharmony_ci} 353920e296Sopenharmony_ci 363920e296Sopenharmony_ciResourceMerge::~ResourceMerge() 373920e296Sopenharmony_ci{ 383920e296Sopenharmony_ci} 393920e296Sopenharmony_ci 403920e296Sopenharmony_ciuint32_t ResourceMerge::Init() 413920e296Sopenharmony_ci{ 423920e296Sopenharmony_ci auto &cmdParser = CmdParser<PackageParser>::GetInstance().GetCmdParser(); 433920e296Sopenharmony_ci const vector<string> &inputs = cmdParser.GetInputs(); 443920e296Sopenharmony_ci if (cmdParser.IsFileList()) { 453920e296Sopenharmony_ci inputsOrder_ = inputs; 463920e296Sopenharmony_ci return RESTOOL_SUCCESS; 473920e296Sopenharmony_ci } 483920e296Sopenharmony_ci 493920e296Sopenharmony_ci map<ConfigParser::ModuleType, vector<string>> inputTypes; 503920e296Sopenharmony_ci for (auto it = inputs.crbegin(); it != inputs.crend(); it++) { 513920e296Sopenharmony_ci string configPath = ResourceUtil::GetMainPath(*it).Append(ConfigParser::GetConfigName()).GetPath(); 523920e296Sopenharmony_ci string resourceDir = FileEntry::FilePath(*it).GetPath(); 533920e296Sopenharmony_ci ConfigParser::ModuleType moduleType = ConfigParser::ModuleType::NONE; 543920e296Sopenharmony_ci if (!ResourceUtil::FileExist(configPath)) { 553920e296Sopenharmony_ci inputTypes[moduleType].push_back(resourceDir); 563920e296Sopenharmony_ci continue; 573920e296Sopenharmony_ci } 583920e296Sopenharmony_ci ConfigParser configParser(configPath); 593920e296Sopenharmony_ci if (configParser.Init() != RESTOOL_SUCCESS) { 603920e296Sopenharmony_ci return RESTOOL_ERROR; 613920e296Sopenharmony_ci } 623920e296Sopenharmony_ci moduleType = configParser.GetModuleType(); 633920e296Sopenharmony_ci inputTypes[moduleType].push_back(resourceDir); 643920e296Sopenharmony_ci } 653920e296Sopenharmony_ci 663920e296Sopenharmony_ci for (const auto &type : ORDERS) { 673920e296Sopenharmony_ci if (inputTypes.find(type) == inputTypes.end()) { 683920e296Sopenharmony_ci continue; 693920e296Sopenharmony_ci } 703920e296Sopenharmony_ci inputsOrder_.insert(inputsOrder_.end(), inputTypes[type].begin(), inputTypes[type].end()); 713920e296Sopenharmony_ci } 723920e296Sopenharmony_ci return RESTOOL_SUCCESS; 733920e296Sopenharmony_ci} 743920e296Sopenharmony_ci 753920e296Sopenharmony_ciconst vector<string> &ResourceMerge::GetInputs() const 763920e296Sopenharmony_ci{ 773920e296Sopenharmony_ci return inputsOrder_; 783920e296Sopenharmony_ci} 793920e296Sopenharmony_ci} 803920e296Sopenharmony_ci} 813920e296Sopenharmony_ci}