1b8a72a62Sopenharmony_ci/* 2b8a72a62Sopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3b8a72a62Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4b8a72a62Sopenharmony_ci * you may not use this file except in compliance with the License. 5b8a72a62Sopenharmony_ci * You may obtain a copy of the License at 6b8a72a62Sopenharmony_ci * 7b8a72a62Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8b8a72a62Sopenharmony_ci * 9b8a72a62Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10b8a72a62Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11b8a72a62Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12b8a72a62Sopenharmony_ci * See the License for the specific language governing permissions and 13b8a72a62Sopenharmony_ci * limitations under the License. 14b8a72a62Sopenharmony_ci */ 15b8a72a62Sopenharmony_ci 16b8a72a62Sopenharmony_cipackage ohos; 17b8a72a62Sopenharmony_ci 18b8a72a62Sopenharmony_ciimport java.util.AbstractMap; 19b8a72a62Sopenharmony_ciimport java.util.HashMap; 20b8a72a62Sopenharmony_ciimport java.util.Map; 21b8a72a62Sopenharmony_ciimport java.util.function.Function; 22b8a72a62Sopenharmony_ci 23b8a72a62Sopenharmony_ci/** 24b8a72a62Sopenharmony_ci * command parser. 25b8a72a62Sopenharmony_ci * 26b8a72a62Sopenharmony_ci */ 27b8a72a62Sopenharmony_cipublic class CommandParser { 28b8a72a62Sopenharmony_ci /** 29b8a72a62Sopenharmony_ci * Parses and returns the hap list that supports the device type. 30b8a72a62Sopenharmony_ci */ 31b8a72a62Sopenharmony_ci public static final String PARSE_MODE_HAPLIST = "hap-list"; 32b8a72a62Sopenharmony_ci 33b8a72a62Sopenharmony_ci /** 34b8a72a62Sopenharmony_ci * Parses and returns the information about the hap. 35b8a72a62Sopenharmony_ci */ 36b8a72a62Sopenharmony_ci public static final String PARSE_MODE_HAPINFO = "hap-info"; 37b8a72a62Sopenharmony_ci 38b8a72a62Sopenharmony_ci private static final String CMD_MODE = "--mode"; 39b8a72a62Sopenharmony_ci private static final String CMD_JSON_PATH = "--json-path"; 40b8a72a62Sopenharmony_ci private static final String CMD_PROFILE_PATH = "--profile-path"; 41b8a72a62Sopenharmony_ci private static final String CMD_INDEX_PATH = "--index-path"; 42b8a72a62Sopenharmony_ci private static final String CMD_JS_PATH = "--js-path"; 43b8a72a62Sopenharmony_ci private static final String CMD_ETS_PATH = "--ets-path"; 44b8a72a62Sopenharmony_ci private static final String CMD_HNP_PATH = "--hnp-path"; 45b8a72a62Sopenharmony_ci private static final String CMD_RPCID_PATH = "--rpcid-path"; 46b8a72a62Sopenharmony_ci private static final String CMD_RPCID = "--rpcid"; 47b8a72a62Sopenharmony_ci private static final String CMD_SO_PATH = "--maple-so-path"; 48b8a72a62Sopenharmony_ci private static final String CMD_SO_DIR = "--maple-so-dir"; 49b8a72a62Sopenharmony_ci private static final String CMD_ABILITY_SO_PATH = "--ability-so-path"; 50b8a72a62Sopenharmony_ci private static final String CMD_DEX_PATH = "--dex-path"; 51b8a72a62Sopenharmony_ci private static final String CMD_ABC_PATH = "--abc-path"; 52b8a72a62Sopenharmony_ci private static final String CMD_FILE_PATH = "--file-path"; 53b8a72a62Sopenharmony_ci private static final String CMD_LIB_PATH = "--lib-path"; 54b8a72a62Sopenharmony_ci private static final String CMD_RES_PATH = "--res-path"; 55b8a72a62Sopenharmony_ci private static final String CMD_RESOURCES_PATH = "--resources-path"; 56b8a72a62Sopenharmony_ci private static final String CMD_ASSETS_PATH = "--assets-path"; 57b8a72a62Sopenharmony_ci private static final String CMD_APK_PATH = "--shell-apk-path"; 58b8a72a62Sopenharmony_ci private static final String CMD_HAP_PATH = "--hap-path"; 59b8a72a62Sopenharmony_ci private static final String CMD_APP_PATH = "--app-path"; 60b8a72a62Sopenharmony_ci private static final String CMD_SIGNATURE_PATH = "--signature-path"; 61b8a72a62Sopenharmony_ci private static final String CMD_CERTIFICATE_PATH = "--certificate-path"; 62b8a72a62Sopenharmony_ci private static final String CMD_FORCE = "--force"; 63b8a72a62Sopenharmony_ci private static final String CMD_OUT_PATH = "--out-path"; 64b8a72a62Sopenharmony_ci private static final String CMD_PACK_INFO_PATH = "--pack-info-path"; 65b8a72a62Sopenharmony_ci private static final String CMD_ENCRYPT_PATH = "--encrypt-path"; 66b8a72a62Sopenharmony_ci private static final String CMD_BIN_PATH = "--bin-path"; 67b8a72a62Sopenharmony_ci private static final String CMD_JAR_PATH = "--jar-path"; 68b8a72a62Sopenharmony_ci private static final String CMD_TXT_PATH = "--txt-path"; 69b8a72a62Sopenharmony_ci private static final String CMD_HAR_PATH = "--har-path"; 70b8a72a62Sopenharmony_ci private static final String CMD_HSP_PATH = "--hsp-path"; 71b8a72a62Sopenharmony_ci private static final String CMD_PARSE_MODE = "--p"; 72b8a72a62Sopenharmony_ci private static final String CMD_PACK_RES_PATH = "--pack-res-path"; 73b8a72a62Sopenharmony_ci private static final String CMD_UNPACKAPK = "--unpackapk"; 74b8a72a62Sopenharmony_ci private static final String CMD_UNPACK_CUT_ENTRY_APK = "--unpack-cut_entry"; 75b8a72a62Sopenharmony_ci private static final String CMD_SHAREDLIBS_PATH = "--shared-libs-path"; 76b8a72a62Sopenharmony_ci private static final String CMD_ENTRYCARD_PATH = "--entrycard-path"; 77b8a72a62Sopenharmony_ci private static final String CMD_HAP_LIST = "--hap-list"; 78b8a72a62Sopenharmony_ci private static final String CMD_HSP_LIST = "--hsp-list"; 79b8a72a62Sopenharmony_ci private static final String CMD_APP_LIST = "--app-list"; 80b8a72a62Sopenharmony_ci private static final String CMD_DIR_LIST = "--dir-list"; 81b8a72a62Sopenharmony_ci private static final String CMD_HQF_LIST = "--hqf-list"; 82b8a72a62Sopenharmony_ci private static final String CMD_APPQF_PATH = "--appqf-path"; 83b8a72a62Sopenharmony_ci private static final String CMD_AN_PATH = "--an-path"; 84b8a72a62Sopenharmony_ci private static final String CMD_AP_PATH = "--ap-path"; 85b8a72a62Sopenharmony_ci private static final String MAIN_MODULE_LIMIT = "--main-module-limit"; 86b8a72a62Sopenharmony_ci private static final String NORMAL_MODULE_LIMIT = "--normal-module-limit"; 87b8a72a62Sopenharmony_ci private static final String TOTAL_LIMIT = "--total-limit"; 88b8a72a62Sopenharmony_ci private static final String VERSION_CODE = "--version-code"; 89b8a72a62Sopenharmony_ci private static final String VERSION_NAME = "--version-name"; 90b8a72a62Sopenharmony_ci private static final String INPUT_LIST = "--input-list"; 91b8a72a62Sopenharmony_ci private static final String INPUT = "--input"; 92b8a72a62Sopenharmony_ci private static final String STAT_DUPLICATE = "--stat-duplicate"; 93b8a72a62Sopenharmony_ci private static final String STAT_SUFFIX = "--stat-suffix"; 94b8a72a62Sopenharmony_ci private static final String STAT_FILE_SIZE = "--stat-file-size"; 95b8a72a62Sopenharmony_ci private static final String CMD_COMPRESS_LEVEL = "--compress-level"; 96b8a72a62Sopenharmony_ci private static final String CMD_PKG_CONTEXT_PATH = "--pkg-context-path"; 97b8a72a62Sopenharmony_ci private static final String CMD_BUNDLE_NAME = "--bundle-name"; 98b8a72a62Sopenharmony_ci private static final String PARSER_STAT_DUPLICATE_ERROR = "code:9132600 " + 99b8a72a62Sopenharmony_ci "error:statDuplicate is invalid! Must be true or false."; 100b8a72a62Sopenharmony_ci private static final String PARSER_STAT_SUFFIX_ERROR = "code:9132601 " + 101b8a72a62Sopenharmony_ci "error:statSuffix is invalid! Must be true or false."; 102b8a72a62Sopenharmony_ci private static final int PARSE_MODE_VALUE_LENGTH = 2; 103b8a72a62Sopenharmony_ci private static final Log LOG = new Log(CommandParser.class.toString()); 104b8a72a62Sopenharmony_ci private static final Map<String, Function<Map.Entry<Utility, String>, Boolean>> commandFuncs = new HashMap<>(); 105b8a72a62Sopenharmony_ci 106b8a72a62Sopenharmony_ci static { 107b8a72a62Sopenharmony_ci initCommandFuncs(); 108b8a72a62Sopenharmony_ci } 109b8a72a62Sopenharmony_ci 110b8a72a62Sopenharmony_ci private static void initCommandFuncs() { 111b8a72a62Sopenharmony_ci commandFuncs.put(CMD_MODE, entry -> { 112b8a72a62Sopenharmony_ci entry.getKey().setMode(entry.getValue()); 113b8a72a62Sopenharmony_ci return true; 114b8a72a62Sopenharmony_ci }); 115b8a72a62Sopenharmony_ci commandFuncs.put(CMD_JSON_PATH, entry -> { 116b8a72a62Sopenharmony_ci entry.getKey().setJsonPath(entry.getValue()); 117b8a72a62Sopenharmony_ci return true; 118b8a72a62Sopenharmony_ci }); 119b8a72a62Sopenharmony_ci commandFuncs.put(CMD_PROFILE_PATH, entry -> { 120b8a72a62Sopenharmony_ci entry.getKey().setProfilePath(entry.getValue()); 121b8a72a62Sopenharmony_ci return true; 122b8a72a62Sopenharmony_ci }); 123b8a72a62Sopenharmony_ci commandFuncs.put(CMD_INDEX_PATH, entry -> { 124b8a72a62Sopenharmony_ci entry.getKey().setIndexPath(entry.getValue()); 125b8a72a62Sopenharmony_ci return true; 126b8a72a62Sopenharmony_ci }); 127b8a72a62Sopenharmony_ci commandFuncs.put(CMD_JS_PATH, entry -> { 128b8a72a62Sopenharmony_ci entry.getKey().setJsPath(entry.getValue()); 129b8a72a62Sopenharmony_ci return true; 130b8a72a62Sopenharmony_ci }); 131b8a72a62Sopenharmony_ci commandFuncs.put(CMD_ETS_PATH, entry -> { 132b8a72a62Sopenharmony_ci entry.getKey().setEtsPath(entry.getValue()); 133b8a72a62Sopenharmony_ci return true; 134b8a72a62Sopenharmony_ci }); 135b8a72a62Sopenharmony_ci commandFuncs.put(CMD_HNP_PATH, entry -> { 136b8a72a62Sopenharmony_ci entry.getKey().setHnpPath(entry.getValue()); 137b8a72a62Sopenharmony_ci return true; 138b8a72a62Sopenharmony_ci }); 139b8a72a62Sopenharmony_ci commandFuncs.put(CMD_RPCID_PATH, entry -> { 140b8a72a62Sopenharmony_ci entry.getKey().setRpcidPath(entry.getValue()); 141b8a72a62Sopenharmony_ci return true; 142b8a72a62Sopenharmony_ci }); 143b8a72a62Sopenharmony_ci commandFuncs.put(CMD_RPCID, entry -> { 144b8a72a62Sopenharmony_ci entry.getKey().setRpcid(entry.getValue()); 145b8a72a62Sopenharmony_ci return true; 146b8a72a62Sopenharmony_ci }); 147b8a72a62Sopenharmony_ci commandFuncs.put(CMD_SO_PATH, entry -> { 148b8a72a62Sopenharmony_ci entry.getKey().setSoPath(entry.getValue()); 149b8a72a62Sopenharmony_ci return true; 150b8a72a62Sopenharmony_ci }); 151b8a72a62Sopenharmony_ci commandFuncs.put(CMD_SO_DIR, entry -> { 152b8a72a62Sopenharmony_ci entry.getKey().setSoDir(entry.getValue()); 153b8a72a62Sopenharmony_ci return true; 154b8a72a62Sopenharmony_ci }); 155b8a72a62Sopenharmony_ci commandFuncs.put(CMD_ABILITY_SO_PATH, entry -> { 156b8a72a62Sopenharmony_ci entry.getKey().setAbilitySoPath(entry.getValue()); 157b8a72a62Sopenharmony_ci return true; 158b8a72a62Sopenharmony_ci }); 159b8a72a62Sopenharmony_ci commandFuncs.put(CMD_DEX_PATH, entry -> { 160b8a72a62Sopenharmony_ci entry.getKey().setDexPath(entry.getValue()); 161b8a72a62Sopenharmony_ci return true; 162b8a72a62Sopenharmony_ci }); 163b8a72a62Sopenharmony_ci commandFuncs.put(CMD_ABC_PATH, entry -> { 164b8a72a62Sopenharmony_ci entry.getKey().setAbcPath(entry.getValue()); 165b8a72a62Sopenharmony_ci return true; 166b8a72a62Sopenharmony_ci }); 167b8a72a62Sopenharmony_ci commandFuncs.put(CMD_FILE_PATH, entry -> { 168b8a72a62Sopenharmony_ci entry.getKey().setFilePath(entry.getValue()); 169b8a72a62Sopenharmony_ci return true; 170b8a72a62Sopenharmony_ci }); 171b8a72a62Sopenharmony_ci commandFuncs.put(CMD_LIB_PATH, entry -> { 172b8a72a62Sopenharmony_ci entry.getKey().setLibPath(entry.getValue()); 173b8a72a62Sopenharmony_ci return true; 174b8a72a62Sopenharmony_ci }); 175b8a72a62Sopenharmony_ci commandFuncs.put(CMD_RES_PATH, entry -> { 176b8a72a62Sopenharmony_ci entry.getKey().setResPath(entry.getValue()); 177b8a72a62Sopenharmony_ci return true; 178b8a72a62Sopenharmony_ci }); 179b8a72a62Sopenharmony_ci commandFuncs.put(CMD_RESOURCES_PATH, entry -> { 180b8a72a62Sopenharmony_ci entry.getKey().setResourcesPath(entry.getValue()); 181b8a72a62Sopenharmony_ci return true; 182b8a72a62Sopenharmony_ci }); 183b8a72a62Sopenharmony_ci commandFuncs.put(CMD_ASSETS_PATH, entry -> { 184b8a72a62Sopenharmony_ci entry.getKey().setAssetsPath(entry.getValue()); 185b8a72a62Sopenharmony_ci return true; 186b8a72a62Sopenharmony_ci }); 187b8a72a62Sopenharmony_ci commandFuncs.put(CMD_APK_PATH, entry -> { 188b8a72a62Sopenharmony_ci entry.getKey().setApkPath(entry.getValue()); 189b8a72a62Sopenharmony_ci return true; 190b8a72a62Sopenharmony_ci }); 191b8a72a62Sopenharmony_ci commandFuncs.put(CMD_HAP_PATH, entry -> { 192b8a72a62Sopenharmony_ci entry.getKey().setHapPath(entry.getValue()); 193b8a72a62Sopenharmony_ci return true; 194b8a72a62Sopenharmony_ci }); 195b8a72a62Sopenharmony_ci commandFuncs.put(CMD_APP_PATH, entry -> { 196b8a72a62Sopenharmony_ci entry.getKey().setAppPath(entry.getValue()); 197b8a72a62Sopenharmony_ci return true; 198b8a72a62Sopenharmony_ci }); 199b8a72a62Sopenharmony_ci commandFuncs.put(CMD_SIGNATURE_PATH, entry -> { 200b8a72a62Sopenharmony_ci entry.getKey().setSignaturePath(entry.getValue()); 201b8a72a62Sopenharmony_ci return true; 202b8a72a62Sopenharmony_ci }); 203b8a72a62Sopenharmony_ci commandFuncs.put(CMD_CERTIFICATE_PATH, entry -> { 204b8a72a62Sopenharmony_ci entry.getKey().setCertificatePath(entry.getValue()); 205b8a72a62Sopenharmony_ci return true; 206b8a72a62Sopenharmony_ci }); 207b8a72a62Sopenharmony_ci commandFuncs.put(CMD_FORCE, entry -> { 208b8a72a62Sopenharmony_ci entry.getKey().setForceRewrite(entry.getValue()); 209b8a72a62Sopenharmony_ci return true; 210b8a72a62Sopenharmony_ci }); 211b8a72a62Sopenharmony_ci commandFuncs.put(CMD_OUT_PATH, entry -> { 212b8a72a62Sopenharmony_ci entry.getKey().setOutPath(entry.getValue()); 213b8a72a62Sopenharmony_ci return true; 214b8a72a62Sopenharmony_ci }); 215b8a72a62Sopenharmony_ci commandFuncs.put(CMD_PACK_INFO_PATH, entry -> { 216b8a72a62Sopenharmony_ci entry.getKey().setPackInfoPath(entry.getValue()); 217b8a72a62Sopenharmony_ci return true; 218b8a72a62Sopenharmony_ci }); 219b8a72a62Sopenharmony_ci commandFuncs.put(CMD_ENCRYPT_PATH, entry -> { 220b8a72a62Sopenharmony_ci entry.getKey().setEncryptPath(entry.getValue()); 221b8a72a62Sopenharmony_ci return true; 222b8a72a62Sopenharmony_ci }); 223b8a72a62Sopenharmony_ci commandFuncs.put(CMD_BIN_PATH, entry -> { 224b8a72a62Sopenharmony_ci entry.getKey().setBinPath(entry.getValue()); 225b8a72a62Sopenharmony_ci return true; 226b8a72a62Sopenharmony_ci }); 227b8a72a62Sopenharmony_ci commandFuncs.put(CMD_JAR_PATH, entry -> { 228b8a72a62Sopenharmony_ci entry.getKey().setJarPath(entry.getValue()); 229b8a72a62Sopenharmony_ci return true; 230b8a72a62Sopenharmony_ci }); 231b8a72a62Sopenharmony_ci commandFuncs.put(CMD_TXT_PATH, entry -> { 232b8a72a62Sopenharmony_ci entry.getKey().setTxtPath(entry.getValue()); 233b8a72a62Sopenharmony_ci return true; 234b8a72a62Sopenharmony_ci }); 235b8a72a62Sopenharmony_ci commandFuncs.put(CMD_HAR_PATH, entry -> { 236b8a72a62Sopenharmony_ci entry.getKey().setHarPath(entry.getValue()); 237b8a72a62Sopenharmony_ci return true; 238b8a72a62Sopenharmony_ci }); 239b8a72a62Sopenharmony_ci commandFuncs.put(CMD_HSP_PATH, entry -> { 240b8a72a62Sopenharmony_ci entry.getKey().setHspPath(entry.getValue()); 241b8a72a62Sopenharmony_ci return true; 242b8a72a62Sopenharmony_ci }); 243b8a72a62Sopenharmony_ci commandFuncs.put(CMD_PACK_RES_PATH, entry -> { 244b8a72a62Sopenharmony_ci entry.getKey().setPackResPath(entry.getValue()); 245b8a72a62Sopenharmony_ci return true; 246b8a72a62Sopenharmony_ci }); 247b8a72a62Sopenharmony_ci commandFuncs.put(CMD_UNPACKAPK, entry -> { 248b8a72a62Sopenharmony_ci entry.getKey().setUnpackApk(entry.getValue()); 249b8a72a62Sopenharmony_ci return true; 250b8a72a62Sopenharmony_ci }); 251b8a72a62Sopenharmony_ci commandFuncs.put(CMD_UNPACK_CUT_ENTRY_APK, entry -> { 252b8a72a62Sopenharmony_ci entry.getKey().setUnpackCutEntryApk(entry.getValue()); 253b8a72a62Sopenharmony_ci return true; 254b8a72a62Sopenharmony_ci }); 255b8a72a62Sopenharmony_ci commandFuncs.put(CMD_SHAREDLIBS_PATH, entry -> { 256b8a72a62Sopenharmony_ci entry.getKey().setSharedLibsPath(entry.getValue()); 257b8a72a62Sopenharmony_ci return true; 258b8a72a62Sopenharmony_ci }); 259b8a72a62Sopenharmony_ci commandFuncs.put(CMD_ENTRYCARD_PATH, entry -> { 260b8a72a62Sopenharmony_ci entry.getKey().setEntryCardPath(entry.getValue()); 261b8a72a62Sopenharmony_ci return true; 262b8a72a62Sopenharmony_ci }); 263b8a72a62Sopenharmony_ci commandFuncs.put(CMD_HAP_LIST, entry -> { 264b8a72a62Sopenharmony_ci entry.getKey().setHapList(entry.getValue()); 265b8a72a62Sopenharmony_ci return true; 266b8a72a62Sopenharmony_ci }); 267b8a72a62Sopenharmony_ci commandFuncs.put(CMD_HSP_LIST, entry -> { 268b8a72a62Sopenharmony_ci entry.getKey().setHspList(entry.getValue()); 269b8a72a62Sopenharmony_ci return true; 270b8a72a62Sopenharmony_ci }); 271b8a72a62Sopenharmony_ci commandFuncs.put(CMD_APP_LIST, entry -> { 272b8a72a62Sopenharmony_ci entry.getKey().setAppList(entry.getValue()); 273b8a72a62Sopenharmony_ci return true; 274b8a72a62Sopenharmony_ci }); 275b8a72a62Sopenharmony_ci commandFuncs.put(CMD_DIR_LIST, entry -> { 276b8a72a62Sopenharmony_ci entry.getKey().setDirList(entry.getValue()); 277b8a72a62Sopenharmony_ci return true; 278b8a72a62Sopenharmony_ci }); 279b8a72a62Sopenharmony_ci commandFuncs.put(CMD_HQF_LIST, entry -> { 280b8a72a62Sopenharmony_ci entry.getKey().setHqfList(entry.getValue()); 281b8a72a62Sopenharmony_ci return true; 282b8a72a62Sopenharmony_ci }); 283b8a72a62Sopenharmony_ci commandFuncs.put(CMD_APPQF_PATH, entry -> { 284b8a72a62Sopenharmony_ci entry.getKey().setAPPQFPath(entry.getValue()); 285b8a72a62Sopenharmony_ci return true; 286b8a72a62Sopenharmony_ci }); 287b8a72a62Sopenharmony_ci commandFuncs.put(CMD_AN_PATH, entry -> { 288b8a72a62Sopenharmony_ci entry.getKey().setANPath(entry.getValue()); 289b8a72a62Sopenharmony_ci return true; 290b8a72a62Sopenharmony_ci }); 291b8a72a62Sopenharmony_ci commandFuncs.put(CMD_AP_PATH, entry -> { 292b8a72a62Sopenharmony_ci entry.getKey().setAPPath(entry.getValue()); 293b8a72a62Sopenharmony_ci return true; 294b8a72a62Sopenharmony_ci }); 295b8a72a62Sopenharmony_ci commandFuncs.put(MAIN_MODULE_LIMIT, entry -> { 296b8a72a62Sopenharmony_ci entry.getKey().setMainModuleLimit(entry.getValue()); 297b8a72a62Sopenharmony_ci return true; 298b8a72a62Sopenharmony_ci }); 299b8a72a62Sopenharmony_ci commandFuncs.put(NORMAL_MODULE_LIMIT, entry -> { 300b8a72a62Sopenharmony_ci entry.getKey().setNormalModuleLimit(entry.getValue()); 301b8a72a62Sopenharmony_ci return true; 302b8a72a62Sopenharmony_ci }); 303b8a72a62Sopenharmony_ci commandFuncs.put(TOTAL_LIMIT, entry -> { 304b8a72a62Sopenharmony_ci entry.getKey().setTotalLimit(entry.getValue()); 305b8a72a62Sopenharmony_ci return true; 306b8a72a62Sopenharmony_ci }); 307b8a72a62Sopenharmony_ci commandFuncs.put(VERSION_CODE, entry -> { 308b8a72a62Sopenharmony_ci try { 309b8a72a62Sopenharmony_ci entry.getKey().setVersionCode(Integer.parseInt(entry.getValue())); 310b8a72a62Sopenharmony_ci } catch (NumberFormatException ignored) { 311b8a72a62Sopenharmony_ci LOG.error("CommandParser::--version-code value must be number."); 312b8a72a62Sopenharmony_ci return false; 313b8a72a62Sopenharmony_ci } 314b8a72a62Sopenharmony_ci return true; 315b8a72a62Sopenharmony_ci }); 316b8a72a62Sopenharmony_ci commandFuncs.put(VERSION_NAME, entry -> { 317b8a72a62Sopenharmony_ci entry.getKey().setVersionName(entry.getValue()); 318b8a72a62Sopenharmony_ci return true; 319b8a72a62Sopenharmony_ci }); 320b8a72a62Sopenharmony_ci commandFuncs.put(INPUT_LIST, entry -> { 321b8a72a62Sopenharmony_ci entry.getKey().setInputList(entry.getValue()); 322b8a72a62Sopenharmony_ci return true; 323b8a72a62Sopenharmony_ci }); 324b8a72a62Sopenharmony_ci commandFuncs.put(INPUT, entry -> { 325b8a72a62Sopenharmony_ci entry.getKey().setInput(entry.getValue()); 326b8a72a62Sopenharmony_ci return true; 327b8a72a62Sopenharmony_ci }); 328b8a72a62Sopenharmony_ci commandFuncs.put(STAT_DUPLICATE, entry -> { 329b8a72a62Sopenharmony_ci if (Boolean.TRUE.toString().equals(entry.getValue()) || Boolean.FALSE.toString().equals(entry.getValue())) { 330b8a72a62Sopenharmony_ci entry.getKey().setStatDuplicate(Boolean.parseBoolean(entry.getValue())); 331b8a72a62Sopenharmony_ci return true; 332b8a72a62Sopenharmony_ci } else { 333b8a72a62Sopenharmony_ci LOG.error(PARSER_STAT_DUPLICATE_ERROR); 334b8a72a62Sopenharmony_ci return false; 335b8a72a62Sopenharmony_ci } 336b8a72a62Sopenharmony_ci }); 337b8a72a62Sopenharmony_ci commandFuncs.put(STAT_SUFFIX, entry -> { 338b8a72a62Sopenharmony_ci if (Boolean.TRUE.toString().equals(entry.getValue()) || Boolean.FALSE.toString().equals(entry.getValue())) { 339b8a72a62Sopenharmony_ci entry.getKey().setStatSuffix(Boolean.parseBoolean(entry.getValue())); 340b8a72a62Sopenharmony_ci return true; 341b8a72a62Sopenharmony_ci } else { 342b8a72a62Sopenharmony_ci LOG.error(PARSER_STAT_SUFFIX_ERROR); 343b8a72a62Sopenharmony_ci return false; 344b8a72a62Sopenharmony_ci } 345b8a72a62Sopenharmony_ci }); 346b8a72a62Sopenharmony_ci commandFuncs.put(STAT_FILE_SIZE, entry -> { 347b8a72a62Sopenharmony_ci entry.getKey().setStatFileSize(entry.getValue()); 348b8a72a62Sopenharmony_ci return true; 349b8a72a62Sopenharmony_ci }); 350b8a72a62Sopenharmony_ci commandFuncs.put(CMD_COMPRESS_LEVEL, entry -> { 351b8a72a62Sopenharmony_ci String level = entry.getValue(); 352b8a72a62Sopenharmony_ci try { 353b8a72a62Sopenharmony_ci int compressLevel = Integer.parseInt(level); 354b8a72a62Sopenharmony_ci if (compressLevel < 1 || compressLevel > 9) { 355b8a72a62Sopenharmony_ci LOG.error("CommandParser::--compress-level value must be number between 1-9"); 356b8a72a62Sopenharmony_ci return false; 357b8a72a62Sopenharmony_ci } else { 358b8a72a62Sopenharmony_ci entry.getKey().setCompressLevel(compressLevel); 359b8a72a62Sopenharmony_ci return true; 360b8a72a62Sopenharmony_ci } 361b8a72a62Sopenharmony_ci } catch (NumberFormatException ex) { 362b8a72a62Sopenharmony_ci LOG.error("CommandParser::--compress-level value must be number between 1-9"); 363b8a72a62Sopenharmony_ci return false; 364b8a72a62Sopenharmony_ci } 365b8a72a62Sopenharmony_ci }); 366b8a72a62Sopenharmony_ci commandFuncs.put(CMD_PKG_CONTEXT_PATH, entry -> { 367b8a72a62Sopenharmony_ci entry.getKey().setPkgContextPath(entry.getValue()); 368b8a72a62Sopenharmony_ci return true; 369b8a72a62Sopenharmony_ci }); 370b8a72a62Sopenharmony_ci commandFuncs.put(CMD_BUNDLE_NAME, entry -> { 371b8a72a62Sopenharmony_ci entry.getKey().setBundleName(entry.getValue()); 372b8a72a62Sopenharmony_ci return true; 373b8a72a62Sopenharmony_ci }); 374b8a72a62Sopenharmony_ci } 375b8a72a62Sopenharmony_ci 376b8a72a62Sopenharmony_ci 377b8a72a62Sopenharmony_ci /** 378b8a72a62Sopenharmony_ci * judge args is null and enter parser. 379b8a72a62Sopenharmony_ci * 380b8a72a62Sopenharmony_ci * @param utility common data 381b8a72a62Sopenharmony_ci * @param args command line 382b8a72a62Sopenharmony_ci * @return commandParser if input valid 383b8a72a62Sopenharmony_ci */ 384b8a72a62Sopenharmony_ci public static boolean commandParser(Utility utility, String[] args) { 385b8a72a62Sopenharmony_ci if (args == null) { 386b8a72a62Sopenharmony_ci LOG.error("CommandParser::commandParser args is null!"); 387b8a72a62Sopenharmony_ci return false; 388b8a72a62Sopenharmony_ci } 389b8a72a62Sopenharmony_ci for (int i = 0; i < args.length - 1; ++i) { 390b8a72a62Sopenharmony_ci String key = args[i]; 391b8a72a62Sopenharmony_ci String value = args[i + 1]; 392b8a72a62Sopenharmony_ci Map.Entry<Utility, String> entry = new AbstractMap.SimpleEntry<>(utility, value); 393b8a72a62Sopenharmony_ci if (commandFuncs.get(key) != null) { 394b8a72a62Sopenharmony_ci commandFuncs.get(key).apply(entry); 395b8a72a62Sopenharmony_ci ++i; 396b8a72a62Sopenharmony_ci } else if (CMD_PARSE_MODE.equals(key)) { 397b8a72a62Sopenharmony_ci if (i + PARSE_MODE_VALUE_LENGTH >= args.length) { 398b8a72a62Sopenharmony_ci LOG.error("input wrong number value for --p command"); 399b8a72a62Sopenharmony_ci return false; 400b8a72a62Sopenharmony_ci } 401b8a72a62Sopenharmony_ci utility.setParseMode(args[i + 1]); 402b8a72a62Sopenharmony_ci if (PARSE_MODE_HAPLIST.equals(utility.getParseMode())) { 403b8a72a62Sopenharmony_ci utility.setDeviceType(args[i + PARSE_MODE_VALUE_LENGTH]); 404b8a72a62Sopenharmony_ci } else if (PARSE_MODE_HAPINFO.equals(utility.getParseMode())) { 405b8a72a62Sopenharmony_ci utility.setHapName(args[i + PARSE_MODE_VALUE_LENGTH]); 406b8a72a62Sopenharmony_ci } 407b8a72a62Sopenharmony_ci i += PARSE_MODE_VALUE_LENGTH; 408b8a72a62Sopenharmony_ci } else { 409b8a72a62Sopenharmony_ci LOG.warning(key + " is invalid!"); 410b8a72a62Sopenharmony_ci } 411b8a72a62Sopenharmony_ci } 412b8a72a62Sopenharmony_ci return true; 413b8a72a62Sopenharmony_ci } 414b8a72a62Sopenharmony_ci} 415