From 60d428e388ad4b4cf10a6e71964cd60865d85fbf Mon Sep 17 00:00:00 2001 From: Patrick Elmer Date: Sun, 10 Mar 2024 21:43:02 +0100 Subject: [PATCH] Add library for writing toml files --- magicli/magicli.py | 95 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 28 deletions(-) diff --git a/magicli/magicli.py b/magicli/magicli.py index 2dfef82..f18cf6f 100644 --- a/magicli/magicli.py +++ b/magicli/magicli.py @@ -7,6 +7,7 @@ try: import tomllib except ModuleNotFoundError: import tomli as tomllib +import tomli_w __version__ = '0.3.0' @@ -317,39 +318,77 @@ def load_pyproject_toml(dirname, maxdepth=3, filename='pyproject.toml'): return {} +# def write_pyproject_toml(path): + +# config = { +# 'Module name': '', +# 'Author': '', +# 'Author email': '', +# 'CLI command': '', +# 'CLI path': '', +# } + +# for key in config.keys(): +# config[key] = input(f"{key}: ") + +# author_and_email = '{name = "' + config['Author'] + '", email = "' + config['Author email'] + '"}' + +# with open(path, 'w') as f: +# f.write(f"""\ +# [build-system] +# requires = ["flit_core >=3.2,<4"] +# build-backend = "flit_core.buildapi" + +# [project] +# name = "{config['Module name']}" +# authors = [{author_and_email}] +# dynamic = ["version", "description"] +# dependencies = ["magicli"] + +# [project.scripts] +# {config['CLI command']} = "{config['CLI path']}" + +# [tool.magicli] +# test = "test" +# """) + + def write_pyproject_toml(path): + if os.path.exists(path): + with open(path, "rb") as f: + config = tomli.load(f) + else: + config = { + "build-system": { + "requires": ["flit_core >=3.2,<4"], + "build-backend": "flit_core.buildapi", + }, + "project": { + "name": "", + "authors": [], + "dynamic": ["version", "description"], + "dependencies": ["magicli"], + }, + } - config = { - 'Module name': '', - 'Author': '', - 'Author email': '', - 'CLI command': '', - 'CLI path': '', - } + if not 'name' in config['project'] or not config['project']['name']: + config['project']['name'] = input('Module name: ') - for key in config.keys(): - config[key] = input(f"{key}: ") + if not 'authors' in config['project'] or not config['project']['authors']: + author = input('Author: ') + email = input('Author email: ') + config['project']['authors'] = [{"author": author, "email": email}] + + if not 'scripts' in config['project']: + config['project']['scripts'] = {} - author_and_email = '{name = "' + config['Author'] + '", email = "' + config['Author email'] + '"}' + if not config['project']['scripts']: + cli_name = input('CLI name: ') + cli_path = input('CLI path: ') + config['project']['scripts'][cli_name] = cli_path - with open(path, 'w') as f: - f.write(f"""\ -[build-system] -requires = ["flit_core >=3.2,<4"] -build-backend = "flit_core.buildapi" - -[project] -name = "{config['Module name']}" -authors = [{author_and_email}] -dynamic = ["version", "description"] -dependencies = ["magicli"] - -[project.scripts] -{config['CLI command']} = "{config['CLI path']}" - -[tool.magicli] -test = "test" -""") + with open(path, 'wb') as f: + tomli_w.dump(config, f) def first_calling_frame():