parser=argparse.ArgumentParser(description='Handles hugo stuff..')
group0=parser.add_mutually_exclusive_group()
#group1 = parser.add_mutually_exclusive_group()
group2=parser.add_mutually_exclusive_group()
group3=parser.add_mutually_exclusive_group()
group0.add_argument("--site",help="Name of site to work with. Use --sites for a list of all available sites.",dest='site_name',action="store",type=str,default=None)
group0.add_argument("--sites",help="Print all sites from from configuration",dest='sites',action="store_true")
group2.add_argument("--create-comments-file",help="Create a comments.json in current working directory with given amount of comments.",dest='create_comments_file',action="store_true")
group2.add_argument("-cpb","--create-pagebundle",help="Create new page bundle. Add --template for specific template to use.",dest='create_pagebundle',action="store",type=str,default=None)
group2.add_argument("--time",help="Copy current date and time to clipboard.",dest='time',action="store_true")
group2.add_argument("-cdc",help="Change directory to contentdir of site.",dest='cdc',action="store_true")
group2.add_argument("-cdl",help="Change directory to alternative contentdir of site.",dest='cdl',action="store_true")
group2.add_argument("--build",help="Build a site.",dest='site_build',action="store_true")
group2.add_argument("--upload",help="Build AND upload site to remote.",dest='site_upload',action="store_true")
group2.add_argument("--deploy",help="Deploy (build AND upload) a site.",dest='deploy',action="store_true")
group2.add_argument("--tmux",help="Start the tmux session for --site.",dest='tmux',action="store_true")
group2.add_argument("-hs","--hugo-server",help="Serves site (full). Use --hugo-server-environment for different environments.",dest='hugo_server',action="store_true")
group2.add_argument("-hsl","--hugo-server-light",help="Serves site (light).",dest='hugo_server_light',action="store_true")
group2.add_argument("-ctcc","--create-tags-categories-caches",help="Serves site (light).",dest='create_tags_categories_caches',action="store_true")
#group3.add_argument("--deprecated_searchpost", help="Find pages/posts containing search term in 'path, slug, title, date or permalink'. Strings and Regular Expressions (regex) are allowed.", dest='searchpost', action="store", type=str, default = None)
group3.add_argument("-hse","--hugo-server-env",help="Use this environment for hugo server. Default on hugo and here is 'development'. Full render is normally 'production'.",dest='hugo_server_environment',action="store",type=str,default=None)
group3.add_argument("-f","--find",help="Find pages/posts containing search term in file content. Uses 'grep -r'. Strings and regex allowed.",dest='find_anything',action="store",type=str,default=None)
group3.add_argument("-ff","--find-fuzzy",help="Fuzzy find pages/posts containing search term. Press F4 to edit a selected file with \"bin_editor\". Strings and regex allowed.",dest='find_anything_fuzzy',action="store",type=str,default=None)
group3.add_argument("-ft","--find-tags",help="Find tags containing search term. Strings and regex are allowed.",dest='find_tags',action="store",type=str,default=None)
group3.add_argument("-fc","--find-categories",help="Find categories containing search term. Strings and regex are allowed.",dest='find_categories',action="store",type=str,default=None)
group3.add_argument("--template",help="Use template for --create-pagebundle command.",dest='template',action="store",type=str,default=None)
group3.add_argument("--list-templates",help="List available templates.",dest='list_templates',action="store_true")
# def searchpost(search): # hugo list all zeigt nur beiträge an, die auch im aktuellen zustand gebaut würden. Bei development bei mir also nur die Beiträge von 2023, findet also nicht alles.
# process = subprocess.run(["hugo", "list", "all" ], cwd=config["sites"][args.site_name]["basedir"], capture_output=True, universal_newlines=True)
""" Nutzt yq, um alle Blogbeiträge und Seiten nach genutzen Tags und Kategorien zu durchsuchen und eine Liste dieser und deren Häufigkeit zu erstellen, die dann mit "hgh.py -ft" genutzt werden kann. """
# Wie gehtn das, dass man dort dann auch landet und das Python sich beendet? Gar nicht, da man auf die Shell, in der Python aufgerufen wurde, keinerlei Zugriff hat.
# Man kann nur mit chdir das cwd wechseln und dort eine Shell aufrufen.
ifargs.create_pagebundle:# Erstellt ein Page Bundle mit Dateinamen aus slug, der automatisch aus dem angegebenen Titel generiert wird. --create-pagebundle "Dies ist ein neuer Blogbeitrag"
# Das funktioniert nur angepasst für Natenoms Blog. Bitte im Code anpassen. Todo...
print("Es gibt schon eine index.md im Page Bundle")
sys.exit(1)
else:
filename=directory_of_pagebundle+"/index.md"
filecontent=process_template(template,title,slug,get_datetime())# erweitern, dass eine Liste mit allen möglichen Dingen übergeben wird, die man in einem Template nutzen könnte.
# tut nicht bei flatpak und normal gleichzeichtig: subprocess.run([config["settings"]["bin_vscode"].split(" "), config["sites"][args.site_name]["basedir"], directory_of_pagebundle + "/index.md"])
print("Hinweise:\n\tPfad zur Datei in Zwischenablage eingefügt. In VSCodium öffnen mit 'Strg + o' und einfügen, Leerzeichen am Ende entfernen. (Das Leerzeichen am Ende kommt von VSCode.)")