1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#!/usr/bin/env python3
"""
usage: git [--version] [--exec-path=<path>] [--html-path]
[-p|--paginate|--no-pager] [--no-replace-objects]
[--bare] [--git-dir=<path>] [--work-tree=<path>]
[-c <name>=<value>] [--help]
<command> [<args>...]
options:
-c <name=value>
-h, --help
-p, --paginate
The most commonly used git commands are:
add Add file contents to the index
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
push Update remote refs along with associated objects
remote Manage set of tracked repositories
See 'git help <command>' for more information on a specific command.
"""
from subprocess import call
from docopt import docopt
if __name__ == "__main__":
args = docopt(__doc__, version="git version 1.7.4.4", options_first=True)
print("global arguments:")
print(args)
print("command arguments:")
argv = [args["<command>"]] + args["<args>"]
if args["<command>"] == "add":
# In case subcommand is implemented as python module:
import git_add
print(docopt(git_add.__doc__, argv=argv))
elif args["<command>"] == "branch":
# In case subcommand is a script in some other programming language:
exit(call(["python", "git_branch.py"] + argv))
elif args["<command>"] in "checkout clone commit push remote".split():
# For the rest we'll just keep DRY:
exit(call(["python", "git_%s.py" % args["<command>"]] + argv))
elif args["<command>"] in ["help", None]:
exit(call(["python", "git.py", "--help"]))
else:
exit("%r is not a git.py command. See 'git help'." % args["<command>"])
|