1b8a72a62Sopenharmony_ci#!/usr/bin/env bash
2b8a72a62Sopenharmony_ci# Copyright (c) 2022-2024 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_ciset -eux
15b8a72a62Sopenharmony_ciset -o pipefail
16b8a72a62Sopenharmony_ciroot_path=$1
17b8a72a62Sopenharmony_cipack_build_out_jar_path=$2
18b8a72a62Sopenharmony_cipack_build_out_path=$3
19b8a72a62Sopenharmony_citoolchain=$4
20b8a72a62Sopenharmony_cicompile_java=$5
21b8a72a62Sopenharmony_cifastjson_jar=$6
22b8a72a62Sopenharmony_cicompress_jar=$7
23b8a72a62Sopenharmony_ciio_jar=$8
24b8a72a62Sopenharmony_cifinal_path=$(pwd)
25b8a72a62Sopenharmony_ci
26b8a72a62Sopenharmony_cijar_dir="jar"
27b8a72a62Sopenharmony_cipack_jar_file="app_packing_tool.jar"
28b8a72a62Sopenharmony_cifastjson_jar_file="fastjson-1.2.83.jar"
29b8a72a62Sopenharmony_cicompress_jar_file="commons-compress-1.26.1.jar"
30b8a72a62Sopenharmony_ciio_jar_file="commons-io-2.15.1.jar"
31b8a72a62Sopenharmony_cijar_directory="${root_path}/jar"
32b8a72a62Sopenharmony_cipack_jar_path="${root_path}/${jar_dir}/${pack_jar_file}"
33b8a72a62Sopenharmony_cimanifest_path="${root_path}/META-INF/packing_tool/MANIFEST.MF"
34b8a72a62Sopenharmony_ci
35b8a72a62Sopenharmony_ciout_dir="${root_path}/out/${toolchain}/packTool"
36b8a72a62Sopenharmony_ciif [ -d "${out_dir}/ohos" ]
37b8a72a62Sopenharmony_ci    then
38b8a72a62Sopenharmony_ci        echo "${out_dir}/ohos exist"
39b8a72a62Sopenharmony_ci    else
40b8a72a62Sopenharmony_ci        mkdir -p "${out_dir}/ohos"
41b8a72a62Sopenharmony_cifi
42b8a72a62Sopenharmony_ci
43b8a72a62Sopenharmony_cicompile_command="javac -source 1.8 -target 1.8 \
44b8a72a62Sopenharmony_ci-cp ${fastjson_jar}:${compress_jar}:${io_jar} -d ${out_dir} ${compile_java}"
45b8a72a62Sopenharmony_cieval ${compile_command}
46b8a72a62Sopenharmony_ci
47b8a72a62Sopenharmony_citemp_dir="$root_path/jar/packing_temp_${toolchain}"
48b8a72a62Sopenharmony_ciif [ -d "${temp_dir}" ]
49b8a72a62Sopenharmony_ci    then
50b8a72a62Sopenharmony_ci        echo "${temp_dir} exit"
51b8a72a62Sopenharmony_ci    else
52b8a72a62Sopenharmony_ci        mkdir ${temp_dir}
53b8a72a62Sopenharmony_cifi
54b8a72a62Sopenharmony_ci
55b8a72a62Sopenharmony_cicd ${out_dir}
56b8a72a62Sopenharmony_ciproduct_pack_jar_command="jar -cvfm ${temp_dir}/${pack_jar_file} ${manifest_path} ./ohos"
57b8a72a62Sopenharmony_cieval ${product_pack_jar_command}
58b8a72a62Sopenharmony_ci
59b8a72a62Sopenharmony_ci# merge app_packing_tool.jar and fastjson/commons-compress
60b8a72a62Sopenharmony_cicp ${fastjson_jar} "${temp_dir}/${fastjson_jar_file}"
61b8a72a62Sopenharmony_cicp ${compress_jar} "${temp_dir}/${compress_jar_file}"
62b8a72a62Sopenharmony_cicp ${io_jar} "${temp_dir}/${io_jar_file}"
63b8a72a62Sopenharmony_cidetach_pack_jar_command="jar -xvf ${pack_jar_file}"
64b8a72a62Sopenharmony_cidetach_fastjson_jar_command="jar -xvf ${fastjson_jar_file}"
65b8a72a62Sopenharmony_cidetach_io_jar_command="jar -xvf ${io_jar_file}"
66b8a72a62Sopenharmony_cidetach_compress_jar_command="jar -xvf ${compress_jar_file}"
67b8a72a62Sopenharmony_cicd ${temp_dir}
68b8a72a62Sopenharmony_cieval ${detach_pack_jar_command}
69b8a72a62Sopenharmony_cieval ${detach_fastjson_jar_command}
70b8a72a62Sopenharmony_cieval ${detach_io_jar_command}
71b8a72a62Sopenharmony_cieval ${detach_compress_jar_command}
72b8a72a62Sopenharmony_cicp "$root_path/jar/NOTICE" "META-INF/NOTICE.txt"
73b8a72a62Sopenharmony_cirm ${pack_jar_file}
74b8a72a62Sopenharmony_cirm ${fastjson_jar_file}
75b8a72a62Sopenharmony_cirm ${compress_jar_file}
76b8a72a62Sopenharmony_cirm ${io_jar_file}
77b8a72a62Sopenharmony_ci
78b8a72a62Sopenharmony_cicd ${jar_directory}
79b8a72a62Sopenharmony_citemp_pack_jar_dir="${root_path}/jar/packtool_${toolchain}"
80b8a72a62Sopenharmony_citemp_pack_jar_path="${root_path}/jar/packtool_${toolchain}/${pack_jar_file}"
81b8a72a62Sopenharmony_cimerge_pack_fast_jar_command="jar -cvfm ${temp_pack_jar_path} ${manifest_path} -C ${temp_dir} ."
82b8a72a62Sopenharmony_ciif [ -d "${temp_pack_jar_dir}" ]
83b8a72a62Sopenharmony_ci    then
84b8a72a62Sopenharmony_ci        echo "${temp_pack_jar_dir} exist"
85b8a72a62Sopenharmony_ci    else
86b8a72a62Sopenharmony_ci        mkdir -p ${temp_pack_jar_dir}
87b8a72a62Sopenharmony_cifi
88b8a72a62Sopenharmony_cieval ${merge_pack_fast_jar_command}
89b8a72a62Sopenharmony_ci
90b8a72a62Sopenharmony_ci# make out dir
91b8a72a62Sopenharmony_cifinal_pack_out_path="${final_path}/${pack_build_out_path}"
92b8a72a62Sopenharmony_cifinal_pack_jar_path="${final_path}/${pack_build_out_jar_path}"
93b8a72a62Sopenharmony_ciif [ -d "$final_pack_out_path" ]
94b8a72a62Sopenharmony_ci    then
95b8a72a62Sopenharmony_ci        echo "${final_pack_out_path} exist"
96b8a72a62Sopenharmony_ci    else 
97b8a72a62Sopenharmony_ci        mkdir -p ${final_pack_out_path}
98b8a72a62Sopenharmony_cifi
99b8a72a62Sopenharmony_cicopy_command="cp ${temp_pack_jar_path} ${final_pack_jar_path}"
100b8a72a62Sopenharmony_cieval ${copy_command}
101b8a72a62Sopenharmony_ciif [ -f "${pack_jar_file}"]
102b8a72a62Sopenharmony_ci    then
103b8a72a62Sopenharmony_ci        echo "${pack_jar_file} exist"
104b8a72a62Sopenharmony_ci    else
105b8a72a62Sopenharmony_ci        cp ${temp_pack_jar_path} ${pack_jar_file}
106b8a72a62Sopenharmony_cifi
107b8a72a62Sopenharmony_cirm -rf ${temp_pack_jar_dir}
108b8a72a62Sopenharmony_cirm -rf ${temp_dir}
109b8a72a62Sopenharmony_cirm -rf ${out_dir}
110