15f9996aaSopenharmony_ci#!/usr/bin/env python3
25f9996aaSopenharmony_ci# -*- coding: utf-8 -*-
35f9996aaSopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd.
45f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
55f9996aaSopenharmony_ci# you may not use this file except in compliance with the License.
65f9996aaSopenharmony_ci# You may obtain a copy of the License at
75f9996aaSopenharmony_ci#
85f9996aaSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
95f9996aaSopenharmony_ci#
105f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
115f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
125f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135f9996aaSopenharmony_ci# See the License for the specific language governing permissions and
145f9996aaSopenharmony_ci# limitations under the License.
155f9996aaSopenharmony_ci
165f9996aaSopenharmony_ciimport argparse
175f9996aaSopenharmony_ciimport os
185f9996aaSopenharmony_ciimport sys
195f9996aaSopenharmony_cifrom util import build_utils
205f9996aaSopenharmony_ci
215f9996aaSopenharmony_ci
225f9996aaSopenharmony_cidef parse_args(args):
235f9996aaSopenharmony_ci    parser = argparse.ArgumentParser()
245f9996aaSopenharmony_ci    build_utils.add_depfile_option(parser)
255f9996aaSopenharmony_ci
265f9996aaSopenharmony_ci    parser.add_argument('--es2abc', help='path to es2abc')
275f9996aaSopenharmony_ci    parser.add_argument('--sources', nargs='+', help='path to .ts file')
285f9996aaSopenharmony_ci    parser.add_argument('--outputs', help='path to .abc file')
295f9996aaSopenharmony_ci    parser.add_argument('--merge-abc', action='store_true', help='merge abc')
305f9996aaSopenharmony_ci    parser.add_argument('--module', action='store_false', help='module type')
315f9996aaSopenharmony_ci
325f9996aaSopenharmony_ci    options = parser.parse_args(args)
335f9996aaSopenharmony_ci    return options
345f9996aaSopenharmony_ci
355f9996aaSopenharmony_ci
365f9996aaSopenharmony_cidef gen_abc(options):
375f9996aaSopenharmony_ci    cmd = [os.path.join(options.es2abc, 'es2abc'), '--output', options.outputs]
385f9996aaSopenharmony_ci    if options.merge_abc:
395f9996aaSopenharmony_ci        cmd.extend(['--merge-abc'])
405f9996aaSopenharmony_ci    if options.module:
415f9996aaSopenharmony_ci        cmd.extend(['--module'])
425f9996aaSopenharmony_ci    cmd.extend(options.sources)
435f9996aaSopenharmony_ci    build_utils.check_output(cmd, env=None)
445f9996aaSopenharmony_ci
455f9996aaSopenharmony_ci
465f9996aaSopenharmony_cidef main(args):
475f9996aaSopenharmony_ci    options = parse_args(args)
485f9996aaSopenharmony_ci
495f9996aaSopenharmony_ci    outputs = [options.outputs]
505f9996aaSopenharmony_ci
515f9996aaSopenharmony_ci    es2abc_path = os.path.join(options.es2abc, 'es2abc')
525f9996aaSopenharmony_ci    build_utils.call_and_write_depfile_if_stale(
535f9996aaSopenharmony_ci        lambda: gen_abc(options),
545f9996aaSopenharmony_ci        options,
555f9996aaSopenharmony_ci        depfile_deps=([options.es2abc]),
565f9996aaSopenharmony_ci        input_paths=(options.sources + [es2abc_path]),
575f9996aaSopenharmony_ci        output_paths=(outputs),
585f9996aaSopenharmony_ci        input_strings=args,
595f9996aaSopenharmony_ci        force=False,
605f9996aaSopenharmony_ci        add_pydeps=False
615f9996aaSopenharmony_ci    )
625f9996aaSopenharmony_ci
635f9996aaSopenharmony_ciif __name__ == '__main__':
645f9996aaSopenharmony_ci    sys.exit(main(sys.argv[1:]))
65