diff --git a/cli.py b/cli.py new file mode 100644 index 0000000..6256103 --- /dev/null +++ b/cli.py @@ -0,0 +1,41 @@ +import click +import jinja2 +from os import path + + +class LeetCode: + @staticmethod + def filename_from_url(url: str) -> str: + num = input("Number: ") + name = url.split("/")[4].replace("-", "_") + return f"{num}_{name}.py" + + +@click.group() +@click.option("--template-dir", default="./templates") +@click.pass_context +def cli(ctx: click.Context, template_dir: str): + ctx.obj["template"] = jinja2.Environment( + loader=jinja2.FileSystemLoader(template_dir) + ) + + +@cli.command() +@click.pass_context +@click.argument("url") +def leetcode(ctx: click.Context, url: str): + file_path = path.join("leetcode", LeetCode.filename_from_url(url)) + if path.exists(file_path): + print("File already exists") + return 1 + + templates: jinja2.Environment = ctx.obj["template"] + templ = templates.get_template("leetcode.j2") + result = templ.render() + + with open(file_path, mode="w", encoding="utf8") as f: + f.write(result) + + +if __name__ == "__main__": + cli(obj={}) diff --git a/requirements.txt b/requirements.txt index 9bb2a15..96e8862 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ pytest black +click +jinja2 diff --git a/templates/leetcode.j2 b/templates/leetcode.j2 new file mode 100644 index 0000000..4391838 --- /dev/null +++ b/templates/leetcode.j2 @@ -0,0 +1,15 @@ +import pytest + + +class Solution: + pass + + +@pytest.fixture +def solution(): + return Solution() + + +@pytest.mark.parametrize("", []) +def test_search(solution: Solution): + pass