From ede0b143baf4ae2cbb856da7393169591bbf1dd5 Mon Sep 17 00:00:00 2001 From: Karolina Surma Date: Tue, 14 Sep 2021 16:43:01 +0200 Subject: [PATCH] Create user facing pyp2spec generating both parts together --- conf2spec.py | 21 +++++----- pyp2conf.py | 33 +++++++++------- pyp2spec.py | 86 +++++++++++++++++++++++++++++++++++++++++ tests/test_conf2spec.py | 5 +-- 4 files changed, 118 insertions(+), 27 deletions(-) create mode 100644 pyp2spec.py diff --git a/conf2spec.py b/conf2spec.py index e5f9afc..fad5945 100644 --- a/conf2spec.py +++ b/conf2spec.py @@ -115,7 +115,7 @@ def fill_in_template(config): return result -def write_spec_file(config, output=None): +def save_spec_file(config, output=None): """Save the spec file in the current directory. Return the saved file name""" @@ -131,19 +131,20 @@ def write_spec_file(config, output=None): return spec_file_name +def create_spec_file(config_file, spec_output=None): + """Create and save the generate spec file.""" + config = ConfigFile(config_file) + return save_spec_file(config, spec_output) + + @click.command() +@click.argument("config") @click.option( - "--filename", "-f", - required=True, - help="Provide configuration file", -) -@click.option( - "--output", "-o", + "--spec-output", "-s", help="Provide custom output where spec file will be saved", ) -def main(filename, output): - config = ConfigFile(filename) - write_spec_file(config, output) +def main(config, spec_output): + create_spec_file(config, spec_output) if __name__ == "__main__": diff --git a/pyp2conf.py b/pyp2conf.py index 025fdb8..b03ac80 100644 --- a/pyp2conf.py +++ b/pyp2conf.py @@ -137,25 +137,33 @@ def create_config_contents(package, description=None, release=None, return contents -def write_config(contents, output=None): +def save_config(contents, output=None): """Write config file to a given destination. If none is provided, save it to current directory with package name as file name. """ - if output: - dest = output - else: + if not output: package = contents["python_name"] - dest = f"./{package}.conf" - with open(dest, "wb") as f: + output = f"./{package}.conf" + with open(output, "wb") as f: tomli_w.dump(contents, f, multiline_strings=True) - return dest + return output + + +def create_config(package, conf_output, description, release, message, email, packagername, version, + summary, date): + + contents = create_config_contents( + package, conf_output, description, release, message, email, + packagername, version, summary, date + ) + return save_config(contents, conf_output) @click.command() @click.argument( "package") @click.option( - "--output", "-o", + "--conf-output", "-o", help="Provide custom output for configuration file", ) @click.option( @@ -190,14 +198,11 @@ def write_config(contents, output=None): "--date", help="Provide custom date for changelog", ) -def main(package, output, description, release, message, email, packagername, +def main(package, conf_output, description, release, message, email, packagername, version, summary, date): - contents = create_config_contents( - package, description, release, message, email, packagername, version, - summary, date - ) - write_config(contents, output) + create_config(package, conf_output, description, release, message, email, packagername, + version, summary, date) if __name__ == "__main__": diff --git a/pyp2spec.py b/pyp2spec.py new file mode 100644 index 0000000..a875ba0 --- /dev/null +++ b/pyp2spec.py @@ -0,0 +1,86 @@ +from pyp2conf import create_config +from conf2spec import create_spec_file +import click + + +@click.command() +@click.argument("package") +@click.option( + "--conf-output", + "-o", + help="Provide custom output for configuration file", +) +@click.option( + "--description", + "-d", + help="Provide description for the package", +) +@click.option( + "--release", + "-r", + help="Provide custom release (corresponds with Release in spec file)", +) +@click.option( + "--message", + "-m", + help="Provide changelog message for the package", +) +@click.option( + "--email", + "-e", + help="Provide e-mail for changelog", +) +@click.option( + "--packagername", + "-n", + help="Provide packager name for changelog", +) +@click.option( + "--version", + "-v", + help="Provide package version to query PyPI for", +) +@click.option( + "--summary", + "-s", + help="Provide custom package summary", +) +@click.option( + "--date", + help="Provide custom date for changelog", +) +@click.option( + "--spec-output", + "-s", + help="Provide custom output where spec file will be saved", +) +def main( + package, + conf_output, + description, + release, + message, + email, + packagername, + version, + summary, + date, + spec_output, +): + config_file = create_config( + package, + conf_output, + description, + release, + message, + email, + packagername, + version, + summary, + date, + ) + create_spec_file(config_file, spec_output) + + +if __name__ == "__main__": + main() diff --git a/tests/test_conf2spec.py b/tests/test_conf2spec.py index ac42dba..cbfcf07 100644 --- a/tests/test_conf2spec.py +++ b/tests/test_conf2spec.py @@ -2,7 +2,7 @@ from pathlib import Path import pytest import conf2spec -import config + def get_config_files(): """Yield the relative paths to the config files placed in 'tests/test_configs'.""" @@ -15,8 +15,7 @@ def get_config_files(): @pytest.mark.parametrize(("config_file"), get_config_files()) def test_generated_specfile(file_regression, config_file): # Run the conf2spec converter - conf = config.ConfigFile(config_file) - rendered_file = conf2spec.write_spec_file(conf) + rendered_file = conf2spec.create_spec_file(config_file) # Compare the results with open(rendered_file, "r") as rendered_f: