#!/usr/bin/env python3 """ Python script to parse, clone and return a repo for gitea in order for asciidoctor to be able to access included files Doesn't overwrite folder if it already exists, will still return that folder name in that case. Parameters : in : a relative path as given by GITEA_PREFIX_SRC (https://docs.gitea.io/en-us/config-cheat-sheet/#markup-markup) return : The name of the folder containing the cloned repo """ PATH_PREFIX = "/var/lib/gitea/git/repositories" CACHE_FOLDER_PATH = "/var/lib/gitea/markdown_cache" #PATH_PREFIX = ".." import sys import subprocess import os if(len(sys.argv) != 2): sys.exit("wrong number of args") # wrong number of args repo_path = sys.argv[1].split('/',3) if(len(repo_path)<2): sys.exit("Wrong path format passed") repo_name = "/".join([CACHE_FOLDER_PATH,repo_path[2]]) repo_path = "/".join(repo_path[:3]) repo_path = PATH_PREFIX + repo_path if not os.path.isdir(CACHE_FOLDER_PATH): os.makedirs(CACHE_FOLDER_PATH) if not os.path.isdir(repo_name): subprocess.run(["git", "clone", repo_path, repo_name], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT) subprocess.run(["asciidoctor", "-s", "-a", "showtitle", "--out-file=-", f"--base-dir={repo_name}"], stdin=sys.stdin, stdout=sys.stdout)