diff --git a/mkdocs_with_confluence/plugin.py b/mkdocs_with_confluence/plugin.py index f40478a..93ccd16 100644 --- a/mkdocs_with_confluence/plugin.py +++ b/mkdocs_with_confluence/plugin.py @@ -1,11 +1,13 @@ import time import os +import sys import re import tempfile import shutil import requests import mimetypes import mistune +import contextlib from time import sleep from mkdocs.config import config_options from mkdocs.plugins import BasePlugin @@ -15,6 +17,19 @@ from os import environ TEMPLATE_BODY = "

TEMPLATE

" +@contextlib.contextmanager +def nostdout(): + save_stdout = sys.stdout + sys.stdout = DummyFile() + yield + sys.stdout = save_stdout + + +class DummyFile(object): + def write(self, x): + pass + + class MkdocsWithConfluence(BasePlugin): _id = 0 config_scheme = ( @@ -61,7 +76,20 @@ class MkdocsWithConfluence(BasePlugin): p = spaces + self.page_title MkdocsWithConfluence.tab_nav.append(p) if "Section" in n: - s = spaces + self.__get_section_title(n) + try: + self.section_title = self.__get_section_title(n) + if self.section_title is None: + raise AttributeError + except AttributeError: + self.section_local_path = self.__get_page_url(n) + print( + f"WARN - Section from path {self.section_local_path} has no" + f" entity in the mkdocs.yml nav section. It will be uploaded" + f" to the Confluence, but you may not see it on the web server!" + ) + self.section_local_name = self.__get_section_title(n) + self.section_title = self.section_local_name + s = spaces + self.section_title MkdocsWithConfluence.tab_nav.append(s) def on_files(self, files, config): @@ -93,7 +121,7 @@ class MkdocsWithConfluence(BasePlugin): else: print( "INFO - Mkdocs With Confluence: Exporting MKDOCS pages to Confluence " - "turned ON by var {env_name}==1!" + f"turned ON by var {env_name}==1!" ) self.enabled = True else: @@ -126,25 +154,27 @@ class MkdocsWithConfluence(BasePlugin): print("-", end="", flush=True) print(f"] ({MkdocsWithConfluence._id} / {self.flen})", end="\r", flush=True) - if self.config["verbose"]: - print(f"\nHandling Page '{page.title}' (And Parent Nav Pages if necessary):\n") + if self.config["debug"]: + print(f"\nDEBUG - Handling Page '{page.title}' (And Parent Nav Pages if necessary):\n") if not all(self.config_scheme): - print("ERR: YOU HAVE EMPTY VALUES IN YOUR CONFIG. ABORTING") + print("DEBUG - ERR: YOU HAVE EMPTY VALUES IN YOUR CONFIG. ABORTING") return markdown try: - if self.config["verbose"]: - print("Get section first parent title...: ") + if self.config["debug"]: + print("DEBUG - Get section first parent title...: ") try: + parent = self.__get_section_title(page.ancestors[0].__repr__()) except IndexError as e: - print( - f'ERR({e}): No second parent! Assuming self.config["parent_page_name"]' - f"{self.config['parent_page_name']}..." - ) + if self.config["debug"]: + print( + f"DEBUG - WRN({e}): No first parent! Assuming " + f"DEBUG - {self.config['parent_page_name']}..." + ) parent = None - if self.config["verbose"]: - print(f"{parent}") + if self.config["debug"]: + print(f"DEBUG - {parent}") if not parent: parent = self.config["parent_page_name"] @@ -153,23 +183,30 @@ class MkdocsWithConfluence(BasePlugin): else: main_parent = self.config["space"] - if self.config["verbose"]: - print("Get section second parent title...: ") + if self.config["debug"]: + print("DEBUG - Get section second parent title...: ") try: parent1 = self.__get_section_title(page.ancestors[1].__repr__()) except IndexError as e: - print(f"ERR({e}) No second parent! Assuming second parent is main parent: {main_parent}...") + if self.config["debug"]: + print( + f"DEBUG - ERR({e}) No second parent! Assuming " + f"second parent is main parent: {main_parent}..." + ) parent1 = None - if self.config["verbose"]: + if self.config["debug"]: print(f"{parent}") if not parent1: parent1 = main_parent - if self.config["verbose"]: - print(f"ONLY ONE PARENT FOUND. ASSUMING AS A FIRST NODE after main parent config {main_parent}") + if self.config["debug"]: + print( + f"DEBUG - ONLY ONE PARENT FOUND. ASSUMING AS A " + f"FIRST NODE after main parent config {main_parent}" + ) - if self.config["verbose"]: - print(f"PARENT0: {parent}, PARENT1: {parent1}, MAIN PARENT: {main_parent}") + if self.config["debug"]: + print(f"DEBUG - PARENT0: {parent}, PARENT1: {parent1}, MAIN PARENT: {main_parent}") tf = tempfile.NamedTemporaryFile(delete=False) f = open(tf.name, "w") @@ -178,11 +215,11 @@ class MkdocsWithConfluence(BasePlugin): try: for match in re.finditer(r'img src="file://(.*)" s', markdown): if self.config["debug"]: - print(f"FOUND IMAGE: {match.group(1)}") + print(f"DEBUG - FOUND IMAGE: {match.group(1)}") files.append(match.group(1)) except AttributeError as e: if self.config["debug"]: - print(f"WARN(({e}): No images found in markdown. Proceed..") + print(f"DEBUG - WARN(({e}): No images found in markdown. Proceed..") new_markdown = re.sub( r'