#!/usr/bin/env python3
# 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.

import argparse
from adcm_client.packer.bundle_build import build


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Builds bundles from sources.')
    parser.add_argument('-n', '--name', type=str, help='bundle name', required=False)
    parser.add_argument('-p', '--path', type=str, help='path where to seek configs', required=True)
    parser.add_argument('-t', '--tarpath', type=str, help='path where to save', default=None)
    parser.add_argument('-w', '--workspace', type=str, help='workspace where to build',
                        default='/tmp')
    parser.add_argument('-c', '--dont-clean-ws', help='remove temporary files from ws',
                        action="store_false")
    parser.add_argument('-m', '--master-branches', nargs='+',
                        help='non default master branches', default=['master'])
    parser.add_argument('-v', '--verbose', action="store_true", help='show info', required=False)
    parser.add_argument('-r', '--release', action="store_true",
                        help='set splitter release flag to true', default=None)
    parser.add_argument('-e', '--edition', default=None, required=False,
                        help='edition to build, usefull for spec with multiple editions')
    parser.add_argument('-s', '--no-timestamp', action="store_true",
                        help='disable timestamp in bundle names',
                        required=False, default=False)
    args = parser.parse_args()

    loglevel = 'INFO' if args.verbose else 'ERROR'

    tarballs = build(
        args.name,
        args.path,
        edition=args.edition,
        workspace=args.workspace,
        tarball_path=args.tarpath,
        loglevel=loglevel,
        clean_ws=args.dont_clean_ws,
        master_branches=args.master_branches,
        release_version=args.release,
        no_timestamp=args.no_timestamp,
    )

    for edition in tarballs:
        with open(edition, 'wb') as file:
            file.write(tarballs[edition].read())
