# SPDX-License-Identifier: AGPL-3.0-or-later # Command line interface of Hydrilla package builder. # # This file is part of Hydrilla # # Copyright (C) 2022 Wojtek Kosior # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # # # I, Wojtek Kosior, thereby promise not to sue for violation of this # file's license. Although I request that you do not make use this code # in a proprietary program, I am not going to enforce this in court. from pathlib import Path import click from .build import Build def validate_dir_path(ctx, param, value): path = Path(value) if path.is_dir(): return path.resolve() raise click.BadParameter(f'{param.human_readable_name} must be a directory path') def validate_path(ctx, param, value): return Path(value) @click.command() @click.option('-s', '--srcdir', default='.', type=click.Path(), callback=validate_dir_path, help='Source directory to build from.') @click.option('-i', '--index-json', default='index.json', type=click.Path(), callback=validate_path, help='Path to file to be processed instead of index.json (if not absolute, resolved relative to srcdir).') @click.option('-d', '--dstdir', type=click.Path(), required=True, callback=validate_dir_path, help='Destination directory to write built package files to.') def preform_build(srcdir, index_json, dstdir): """ Build Hydrilla package from scrdir and write the resulting files under dstdir. """ build = Build(srcdir, index_json) build.write_package_files(dstdir) preform_build()