diff options
Diffstat (limited to 'src/hydrilla/builder/__main__.py')
-rw-r--r-- | src/hydrilla/builder/__main__.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/hydrilla/builder/__main__.py b/src/hydrilla/builder/__main__.py new file mode 100644 index 0000000..5b98202 --- /dev/null +++ b/src/hydrilla/builder/__main__.py @@ -0,0 +1,61 @@ +# 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 <https://www.gnu.org/licenses/>. +# +# +# 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() |