#!/usr/bin/env python3 import sys, os import argparse import requests VERSION = "0.1.0" def main(): ap = argparse.ArgumentParser( prog=sys.argv[0], epilog="patchodon.py version " + VERSION + " is a free software.", description="Generate metadata from a single document change.", ) cmds = ap.add_subparsers(required=True, dest="command") if "POST command": post = cmds.add_parser("post") if "API token sources": group = post.add_mutually_exclusive_group() group.add_argument( "--debug-api-token", help=( "specify the API token (not very secure, good for debugging" " only)" ), ) group.add_argument( "-e", "--env-api-token", action="store_true", help="get the API token from environment PATCHODON_API_TOKEN", ) post.add_argument( "-i", "--instance-url", help="mastodon instance URL to post to" ) post.add_argument( "-r", "--recipient", help="recipient to tag in the initial post" ) post.add_argument( "patchfile", nargs="*", help=( "filenames of the patch series; taken from stdin if none are" " specified (useful for piping the output of git-format-patch" " into patchodon)" ), ) if "GET command": get = cmds.add_parser("get") get.add_argument( "patch_url", help=( "root URL of the status where the patch was posted (the status" " should contain the patch hash)" ), ) if "output possibilities": group = get.add_mutually_exclusive_group() group.add_argument( "-a", "--am", help=( "apply the patches immediately with git-am instead of" " storing them in a directory" ), ) group.add_argument( "-C", "--out-dir", help=( "output the patches into a given directory (by default, `.'" ), ) get.add_argument( "--overwrite", action="store_true", help="overwrite existing patch files instead of renaming", ) ap.add_argument( "-c", "--config", help=( "specify a custom config INI file (it can specify a section" " [patchodon] with keys instance_url and api_token), defaults to" " `$HOME/.patchodon.ini'; specify /dev/null to avoid reading" " configs" ), ) args = ap.parse_args() print(args) if __name__ == "__main__": main()