diff --git a/.editorconfig b/.editorconfig index c6c8b36219..be8416b252 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,3 +7,6 @@ end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true + +[*.py] +indent_size = 4 diff --git a/.gitignore b/.gitignore index 52e19f6e0e..62378dfd1b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# VS Code +.vscode/ + # macOS filesystem custom folder attributes .DS_Store @@ -18,3 +21,7 @@ index.json # Generated PDF pages scripts/pdf/*.html scripts/pdf/tldr-pages.pdf + +# Python venv for testing the PDF script +# Create it with: python3 -m venv scripts/pdf/venv/ +scripts/pdf/venv/ diff --git a/scripts/pdf/README.md b/scripts/pdf/README.md index fe86360fe4..b93e1b1a10 100644 --- a/scripts/pdf/README.md +++ b/scripts/pdf/README.md @@ -4,9 +4,9 @@ This directory contains the script and related resources to generate a PDF docum ## Preview -![aa](https://user-images.githubusercontent.com/29029116/35637791-4e42af80-06db-11e8-8b8e-42ce6c905ff4.jpg) -![bb](https://user-images.githubusercontent.com/29029116/35637798-51e3784a-06db-11e8-9576-6e57ef5c5c20.jpg) -![cc](https://user-images.githubusercontent.com/29029116/35637801-54449fce-06db-11e8-93f7-d90cdc34044b.jpg) +![cryptsetup in the Basic color-scheme.](https://user-images.githubusercontent.com/29029116/35637791-4e42af80-06db-11e8-8b8e-42ce6c905ff4.jpg) +![cryptsetup in the Solarized Light color-scheme.](https://user-images.githubusercontent.com/29029116/35637798-51e3784a-06db-11e8-9576-6e57ef5c5c20.jpg) +![cryptsetup in the Solarized Dark color-scheme.](https://user-images.githubusercontent.com/29029116/35637801-54449fce-06db-11e8-93f7-d90cdc34044b.jpg) ## Highlights @@ -15,23 +15,24 @@ This directory contains the script and related resources to generate a PDF docum ## Requirements -The PDF is generated by first converting the Markdown files to HTML, and then rendering those HTML files as PDF. It depends on `markdown` and `weasyprint` libraries. To install the dependencies, run: +The PDF is generated by first converting the Markdown files to HTML, and then rendering those HTML files as a PDF. It depends on the `markdown` and `weasyprint` libraries. To install the dependencies, run: - pip3 install -r requirements.txt + python3 -m pip install -r requirements.txt Make sure OS specific dependencies for WeasyPrint are installed by following the instructions [here](http://weasyprint.readthedocs.io/en/latest/install.html). ## Usage -Generating the PDF is as simple as running +Generating the PDF is as simple as running: - python3 render.py -c + python3 render.py --color -Complete information about the arguments can be viewed by running +Complete information about the arguments can be viewed by running: python3 render.py --help -The color-schemes that can be specified are +The color-schemes that can be specified are: +* `basic` * `solarized-light` * `solarized-dark` diff --git a/scripts/pdf/render.py b/scripts/pdf/render.py index 3af17e96c8..ff8c32d493 100644 --- a/scripts/pdf/render.py +++ b/scripts/pdf/render.py @@ -1,8 +1,10 @@ #!/usr/bin/env python3 -# A Python script to generate a single PDF document with all the `tldr` pages. It works by generating -# intermediate HTML files from existing md files using Python-markdown, applying desired formatting -# through CSS, and finally rendering them as PDF. There is no LaTeX dependency for generating the PDF. +""" +A Python script to generate a single PDF document with all the `tldr` pages. It works by generating +intermediate HTML files from existing md files using Python-markdown, applying desired formatting +through CSS, and finally rendering them as PDF. There is no LaTeX dependency for generating the PDF. +""" import os import sys @@ -53,8 +55,6 @@ def main(loc, colorscheme): for operating_sys in oslist: - i = 1 - # Required string to create directory title pages dir_title = "

" + \ operating_sys.capitalize() + "

" @@ -73,25 +73,24 @@ def main(loc, colorscheme): allmd.sort() # Conversion of Markdown to HTML - for md in allmd: + for page_number, md in enumerate(allmd, start=1): - with open(md, "r") as inp: - text = inp.readlines() + with open(md, "r") as inp: + text = inp.readlines() - with open("htmlout.html", "w") as out: - out.write(header) + with open("htmlout.html", "w") as out: + out.write(header) - for line in text: - if re.match(r'^>', line): - line = line[:0] + '####' + line[1:] - html = markdown.markdown(line) - out.write(html) - out.write(footer) + for line in text: + if re.match(r'^>', line): + line = line[:0] + '####' + line[1:] + html = markdown.markdown(line) + out.write(html) + out.write(footer) - group.append(HTML("htmlout.html").render()) - print("Rendered page {} of the directory {}".format( - str(i), operating_sys)) - i += 1 + group.append(HTML("htmlout.html").render()) + print("Rendered page {} of the directory {}".format( + str(page_number), operating_sys)) allmd.clear() @@ -117,19 +116,10 @@ def main(loc, colorscheme): if __name__ == "__main__": - # Unless specified otherwise by the user, this is the default colorscheme - colorscheme = "basic" - # Parsing the arguments - parser = argparse.ArgumentParser() - parser.add_argument("dir_path", help="Path to the 'pages' directory") - parser.add_argument("-c", - choices=["solarized-light", "solarized-dark"], - help="Color scheme of the PDF") + parser = argparse.ArgumentParser(prog="tdlr-pages-to-PDF", description="A Python script to generate a single PDF document with all the `tldr` pages.") + parser.add_argument("dir_path", help = "Path to the 'pages' directory") + parser.add_argument("-c", "--color", choices=["solarized-light", "solarized-dark", "basic"], default="basic", help="Color scheme of the PDF") args = parser.parse_args() - loc = args.dir_path - if args.c == "solarized-light" or args.c == "solarized-dark": - colorscheme = args.c - - main(loc, colorscheme) + main(args.dir_path, args.color)