""" This is a simple script that will scan through the current directory and generate the corresponding DIRECTORY.md file, can also specify files or folders to be ignored. """ import os # Target URL (master) URL = "https://github.com/TheAlgorithms/Python/blob/master/" def tree(d, ignores, ignores_ext): return _markdown(d, ignores, ignores_ext, 0) def _markdown(parent, ignores, ignores_ext, depth): out = "" dirs, files = [], [] for i in os.listdir(parent): full = os.path.join(parent, i) name, ext = os.path.splitext(i) if i in ignores or ext in ignores_ext: continue if os.path.isfile(full): # generate list pre = parent.replace("./", "").replace(" ", "%20") # replace all spaces to safe URL child = i.replace(" ", "%20") files.append((pre, child, name)) else: dirs.append(i) # Sort files files.sort(key=lambda e: e[2].lower()) for f in files: pre, child, name = f out += " " * depth + "* [" + name.replace("_", " ") + "](" + URL + pre + "/" + child + ")\n" # Sort directories dirs.sort() for i in dirs: full = os.path.join(parent, i) i = i.replace("_", " ").title() if depth == 0: out += "## " + i + "\n" else: out += " " * depth + "* " + i + "\n" out += _markdown(full, ignores, ignores_ext, depth+1) return out # Specific files or folders with the given names will be ignored ignores = [".vs", ".gitignore", ".git", "~script.py", "__init__.py", ] # Files with given entensions will be ignored ignores_ext = [ ".md", ".ipynb", ".png", ".jpg", ".yml" ] if __name__ == "__main__": with open("DIRECTORY.md", "w+") as f: f.write(tree(".", ignores, ignores_ext))