83 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | #!/usr/bin/env python | ||
|  | # -*- coding: utf-8 -*- | ||
|  | # Copyright (c) 2021 Huawei Device Co., Ltd. | ||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  | # you may not use this file except in compliance with the License. | ||
|  | # You may obtain a copy of the License at | ||
|  | # | ||
|  | #     http://www.apache.org/licenses/LICENSE-2.0 | ||
|  | # | ||
|  | # Unless required by applicable law or agreed to in writing, software | ||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  | # See the License for the specific language governing permissions and | ||
|  | # limitations under the License. | ||
|  | 
 | ||
|  | from email.policy import default | ||
|  | import optparse | ||
|  | import os | ||
|  | import sys | ||
|  | import shutil | ||
|  | import json | ||
|  | 
 | ||
|  | from zipfile import ZipFile  # noqa: E402 | ||
|  | from util import build_utils  # noqa: E402 | ||
|  | 
 | ||
|  | def parse_args(args): | ||
|  |     args = build_utils.expand_file_args(args) | ||
|  | 
 | ||
|  |     parser = optparse.OptionParser() | ||
|  |     build_utils.add_depfile_option(parser) | ||
|  |     parser.add_option('--resources-dir', help='resources directory') | ||
|  |     parser.add_option('--app-profile', default=False, help='path to app profile') | ||
|  |     parser.add_option('--hap-profile', help='path to hap profile') | ||
|  |     parser.add_option('--generated-profile', help='path to generated profile') | ||
|  |     parser.add_option('--release-type', help='release type') | ||
|  |     options, _ = parser.parse_args(args) | ||
|  |     options.resources_dir = build_utils.parse_gn_list(options.resources_dir) | ||
|  |     return options | ||
|  | 
 | ||
|  | 
 | ||
|  | def merge_profile(options): | ||
|  |     all_data = {} | ||
|  |     with open(options.hap_profile) as f0: | ||
|  |         if len(options.app_profile) == 0: | ||
|  |             all_data = json.load(f0) | ||
|  |         else: | ||
|  |             module_data = json.load(f0)["module"] | ||
|  |             with open(options.app_profile) as f1: | ||
|  |                 app_data = json.load(f1)["app"] | ||
|  |                 all_data["app"] = app_data | ||
|  |                 all_data["module"] = module_data | ||
|  |                 f1.close() | ||
|  |         f0.close() | ||
|  |     all_data["app"]["apiReleaseType"] = options.release_type | ||
|  |     f3 = open(options.generated_profile, "w") | ||
|  |     json.dump(all_data, f3, indent=4, ensure_ascii=False) | ||
|  |     f3.close() | ||
|  | 
 | ||
|  | 
 | ||
|  | def main(args): | ||
|  |     options = parse_args(args) | ||
|  |     inputs = [options.hap_profile] | ||
|  |     if not options.app_profile: | ||
|  |         inputs += options.app_profile | ||
|  |     depfiles = [] | ||
|  |     for directory in options.resources_dir: | ||
|  |         depfiles += (build_utils.get_all_files(directory)) | ||
|  | 
 | ||
|  |     input_strings = [] | ||
|  |     outputs = [options.generated_profile] | ||
|  |     build_utils.call_and_write_depfile_if_stale( | ||
|  |         lambda: merge_profile(options), | ||
|  |         options, | ||
|  |         depfile_deps=depfiles, | ||
|  |         input_paths=inputs + depfiles, | ||
|  |         input_strings=input_strings, | ||
|  |         output_paths=(outputs), | ||
|  |         force=False, | ||
|  |         add_pydeps=False) | ||
|  | 
 | ||
|  | if __name__ == '__main__': | ||
|  |     sys.exit(main(sys.argv[1:])) |