Skip to content

Task2md

cli()

A CLI tool to generate markdown documentation files from Task files.

Source code in src/task2md/task2md.py
13
14
15
16
17
@click.group()
@click.version_option("1.1.2", prog_name="task2md")
def cli() -> None:
    """A CLI tool to generate markdown documentation files from Task files."""
    pass

dir(input_dir, output_dir)

Command to generate a markdown documentation file from a directory.

Raises:

Type Description
ClickException

Error when reading input file or writing output file

Source code in src/task2md/task2md.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@cli.command()
@click.option(
    "-i",
    "--input",
    "input_dir",
    type=click.Path(exists=True, file_okay=False, dir_okay=True),
    required=True,
    help="Input directory",
)
@click.option(
    "-d",
    "--dir",
    "output_dir",
    type=click.Path(exists=False, file_okay=False, dir_okay=True, writable=True),
    required=False,
    help="Output markdown documentation files directory. Default current directory.",
)
def dir(
    input_dir: click.Path,
    output_dir: click.Path,
) -> None:
    """Command to generate a markdown documentation file from a directory.

    Raises:
        click.ClickException: Error when reading input file or writing output file
    """
    task_files: List[str] = []
    in_dir = click.format_filename(str(input_dir))
    for filename in os.listdir(in_dir):
        if filename.endswith(".yml") or filename.endswith(".yaml"):
            task_files.append(filename)

    if len(task_files) == 0:
        click.echo(f"No yaml file found in: {in_dir}")
    else:
        try:
            out_dir = Dir(output_dir, True)

        except OSError as error:
            raise click.ClickException(
                "Output directory can not be created!\n" + str(error)
            )

        try:
            index_file = Index()
            for filename in task_files:
                task_file = File(path=f"{in_dir}/{filename}")
                task_file.generate(out_dir)

                index_file.task_files.append(task_file)

                click.echo(
                    f"Task documentation generated: {task_file.get_filename()}.md"
                )
            filename = "index"
            index_file.task_files.sort()
            index_file.generate(out_dir)
            click.echo("Index documentation generated: index.md")

        except ValueError as ve:
            raise click.ClickException(
                "Error on reading or writing file {} :\n {}".format(filename, str(ve))
            )

file(input_file, output_dir)

Command to generate a markdown documentation file from a Task file.

Raises:

Type Description
ClickException

Error when reading input file or writing output file

Source code in src/task2md/task2md.py
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
@cli.command()
@click.option(
    "-i",
    "--input",
    "input_file",
    type=click.Path(exists=True, file_okay=True, dir_okay=False),
    required=True,
    help="Input Task yaml file.",
)
@click.option(
    "-d",
    "--dir",
    "output_dir",
    type=click.Path(exists=False, file_okay=False, dir_okay=True, writable=True),
    required=False,
    help="Output markdown documentation files directory. Default current directory.",
)
def file(
    input_file: click.Path,
    output_dir: click.Path,
) -> None:
    """Command to generate a markdown documentation file from a Task file.

    Raises:
        click.ClickException: Error when reading input file or writing output file
    """
    input_filename = click.format_filename(str(input_file))
    task_file = File(path=input_filename)

    try:
        dir = Dir(output_dir, True)

    except OSError as error:
        raise click.ClickException(
            "Output directory can not be created!\n" + str(error)
        )

    try:
        task_file.generate(dir)

        click.echo(f"Task documentation generated: {task_file.get_filename()}.md")

    except ValueError as ve:
        raise click.ClickException(
            "Error on reading file {} :\n {}".format(input_filename, str(ve))
        )