Use pysheller library to parse commands

This commit is contained in:
samedamci 2021-09-01 21:53:58 +02:00
parent 122ac7e8b4
commit 11b8331037
No known key found for this signature in database
GPG Key ID: FCB4A9A20D00E894
6 changed files with 14 additions and 35 deletions

View File

@ -1,36 +1,13 @@
from os import listdir, path from pysheller import PySheller
from argparse import ArgumentParser from os import chdir
from subprocess import call from os.path import dirname, realpath, join
dir_path = path.join(path.dirname(path.realpath(__file__)), "commands")
def parse_comments(command: str) -> dict:
with open(path.join(dir_path, f"{command}.sh"), "r") as f:
lines = f.read().splitlines()
comments = [
l.replace("# ", "")
for l in lines
if l.startswith("#") and not l.startswith("#!")
]
return {key: val.strip() for key, val in (line.split(":") for line in comments)}
def main(): def main():
commands = [x.replace(".sh", "") for x in listdir(dir_path)] dir_path = dirname(realpath(__file__))
parser = ArgumentParser( PySheller(
prog="guzzy", name="guzzy",
description="Interactive CLI git client inside fzf.", description="Interactive CLI git client inside fzf.",
allow_abbrev=False, commands_dir=join(dir_path, "commands"),
) )
subparsers = parser.add_subparsers(dest="command", required=True)
subcommands = {}
for cmd in commands:
p = parse_comments(cmd)
subcommands[cmd] = subparsers.add_parser(cmd, help=p["help"])
args = parser.parse_args()
call(path.join(dir_path, f"{args.command}.sh"), shell=True)

View File

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
# help: list modified, uncommited files and diff for each one # help : list modified, uncommited files and diff for each one
git ls-files --modified | fzf --preview 'git diff --color=always {}' git ls-files --modified | fzf --preview 'git diff --color=always {}'

View File

@ -1,6 +1,7 @@
#!/bin/sh #!/bin/sh
# help: list all commits where file was changed and display diff for each one # help : list all commits where file was changed and display diff for each one
# arg1 : filename - name of the file to show history of
file_name="$1" file_name="$1"

View File

@ -1,6 +1,7 @@
#!/bin/sh #!/bin/sh
# help: list all files in specified commit/tag/branch with preview # help : list all files in specified commit/tag/branch with preview
# arg1 : commit - commit hash, branch or tag name
[ "$1" ] && commit_hash="$1" || commit_hash="HEAD" [ "$1" ] && commit_hash="$1" || commit_hash="HEAD"

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# help: list all commits with diff for changes fot each one # help : list all commits with diff for changes fot each one
CWD="$(dirname "$(readlink -f "$0")")" CWD="$(dirname "$(readlink -f "$0")")"

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# help: list all tags with tag messages # help : list all tags with tag messages
git --no-pager tag --sort=-taggerdate -l | git --no-pager tag --sort=-taggerdate -l |
fzf --preview "git --no-pager tag -l {} --format='%(contents)'" fzf --preview "git --no-pager tag -l {} --format='%(contents)'"