42 lines
1012 B
Python
42 lines
1012 B
Python
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={})
|