mirror of https://github.com/eyhc1/rendercv.git
user typer for CLI
This commit is contained in:
parent
f94db9bf53
commit
7377d6491b
|
@ -16,6 +16,7 @@ dependencies = [
|
||||||
'pyspellchecker==0.7.2',
|
'pyspellchecker==0.7.2',
|
||||||
'ruamel.yaml==0.17.35',
|
'ruamel.yaml==0.17.35',
|
||||||
'email-validator==2.0.0.post2',
|
'email-validator==2.0.0.post2',
|
||||||
|
'typer[all]==0.9.0',
|
||||||
]
|
]
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Intended Audience :: Science/Research",
|
"Intended Audience :: Science/Research",
|
||||||
|
|
|
@ -1,27 +1,61 @@
|
||||||
import sys
|
|
||||||
import os
|
import os
|
||||||
|
import logging
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
from .rendering import read_input_file, render_template, run_latex
|
from .rendering import read_input_file, render_template, run_latex
|
||||||
|
|
||||||
|
import typer
|
||||||
|
from jinja2 import Environment, PackageLoader
|
||||||
|
|
||||||
def main(input_file_path=None):
|
logger = logging.getLogger(__name__)
|
||||||
if len(sys.argv) < 2:
|
|
||||||
if input_file_path is None:
|
|
||||||
raise ValueError("Please provide the input file path.")
|
|
||||||
elif len(sys.argv) == 2:
|
|
||||||
input_file_path = sys.argv[1]
|
|
||||||
else:
|
|
||||||
if input_file_path is None:
|
|
||||||
raise ValueError(
|
|
||||||
"More than one input is provided. Please provide only one input, which is"
|
|
||||||
" the input file path."
|
|
||||||
)
|
|
||||||
|
|
||||||
file_path = os.path.join(os.getcwd(), input_file_path)
|
app = typer.Typer(
|
||||||
data = read_input_file(file_path)
|
help="RenderCV - A LateX CV generator from YAML",
|
||||||
output_latex_file = render_template(data)
|
add_completion=False,
|
||||||
run_latex(output_latex_file)
|
pretty_exceptions_enable=True,
|
||||||
|
pretty_exceptions_short=True,
|
||||||
|
pretty_exceptions_show_locals=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@app.command(help="Render a YAML input file")
|
||||||
|
def render(
|
||||||
|
input_file: Annotated[
|
||||||
|
str,
|
||||||
|
typer.Argument(help="Name of the YAML input file"),
|
||||||
|
]
|
||||||
|
):
|
||||||
|
try:
|
||||||
|
file_path = os.path.abspath(input_file)
|
||||||
|
data = read_input_file(file_path)
|
||||||
|
output_latex_file = render_template(data)
|
||||||
|
run_latex(output_latex_file)
|
||||||
|
except Exception as e:
|
||||||
|
logger.critical(e)
|
||||||
|
typer.Abort()
|
||||||
|
|
||||||
|
|
||||||
|
@app.command(help="Generate a YAML input file to get started")
|
||||||
|
def new(name: Annotated[str, typer.Argument(help="Full name")]):
|
||||||
|
try:
|
||||||
|
environment = Environment(
|
||||||
|
loader=PackageLoader("rendercv", os.path.join("templates")),
|
||||||
|
trim_blocks=True,
|
||||||
|
lstrip_blocks=True,
|
||||||
|
)
|
||||||
|
environment.variable_start_string = "<<"
|
||||||
|
environment.variable_end_string = ">>"
|
||||||
|
|
||||||
|
template = environment.get_template(f"new_input.yaml.j2")
|
||||||
|
new_input_file = template.render(name=name)
|
||||||
|
|
||||||
|
name = name.replace(" ", "_")
|
||||||
|
file_name = f"{name}_CV.yaml"
|
||||||
|
with open(file_name, "w", encoding="utf-8") as file:
|
||||||
|
file.write(new_input_file)
|
||||||
|
except Exception as e:
|
||||||
|
logger.critical(e)
|
||||||
|
typer.Abort()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
app()
|
||||||
|
|
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
Loading…
Reference in New Issue