Skip to content

Commit 7b84022

Browse files
committed
Integration subcommand
1 parent 546b983 commit 7b84022

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

sphinxnotes/snippet/cli.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from typing import List
1313
from os import path
1414
from textwrap import dedent
15+
from shutil import get_terminal_size
1516

1617
from xdg.BaseDirectory import xdg_config_home
1718

@@ -43,44 +44,39 @@ def main(argv:List[str]=sys.argv[1:]) -> int:
4344

4445
# Init subcommands
4546
subparsers = parser.add_subparsers()
46-
mgmtparser = subparsers.add_parser('stat',
47-
aliases=['s'],
47+
mgmtparser = subparsers.add_parser('stat', aliases=['s'],
4848
formatter_class=HelpFormatter,
4949
help='snippets statistic')
5050
mgmtparser.set_defaults(func=_on_command_mgmt)
5151

52-
listparser = subparsers.add_parser('list',
53-
aliases=['l'],
52+
listparser = subparsers.add_parser('list', aliases=['l'],
5453
formatter_class=HelpFormatter,
5554
help='list snippet indexes, columns of indexes: %s' %
5655
VISIABLE_COLUMNS)
57-
listparser.add_argument('--kinds', '-k',
58-
action='store_true',
59-
default='*',
56+
listparser.add_argument('--kinds', '-k', type=str, nargs=1, default='*',
6057
help='list specified kinds only')
61-
listparser.add_argument('--width', '-w',
62-
action='store_true',
63-
default=120,
58+
listparser.add_argument('--width', '-w', nargs=1, type=int,
59+
default=get_terminal_size((120, 0)).columns,
6460
help='width in characters of output')
6561
listparser.set_defaults(func=_on_command_list)
6662

67-
getparser = subparsers.add_parser('get',
68-
aliases=['g'],
63+
getparser = subparsers.add_parser('get', aliases=['g'],
6964
formatter_class=HelpFormatter,
7065
help='get information of snippet by index ID')
71-
getparser.add_argument('--file', '-f',
72-
action='store_true',
66+
getparser.add_argument('--file', '-f', action='store_true',
7367
help='get source file path of snippet')
74-
getparser.add_argument('--text', '-t',
75-
action='store_true',
76-
default=True,
68+
getparser.add_argument('--text', '-t', action='store_true', default=True,
7769
help='get source reStructuredText of snippet')
78-
getparser.add_argument('index_id',
79-
type=str,
80-
nargs='+',
81-
help='index ID')
70+
getparser.add_argument('index_id', type=str, nargs='+', help='index ID')
8271
getparser.set_defaults(func=_on_command_get)
8372

73+
igparser = subparsers.add_parser('integration', aliases=['i'],
74+
formatter_class=HelpFormatter,
75+
help='integration related commands')
76+
igparser.add_argument('--zsh', '-z', action='store_true', help='dump zsh plugin')
77+
igparser.set_defaults(func=_on_command_integration, parser=igparser)
78+
79+
8480
# Parse command line arguments
8581
args = parser.parse_args(argv)
8682

@@ -100,6 +96,8 @@ def main(argv:List[str]=sys.argv[1:]) -> int:
10096
# Call subcommand
10197
if hasattr(args, 'func'):
10298
args.func(args)
99+
else:
100+
parser.print_help()
103101

104102

105103
def _on_command_mgmt(args:argparse.Namespace):
@@ -133,5 +131,14 @@ def _on_command_get(args:argparse.Namespace):
133131
print('\n'.join(item.snippet.text()))
134132

135133

134+
def _on_command_integration(args:argparse.Namespace):
135+
# NOTE: files are included by MANIFEST.in
136+
if args.zsh:
137+
with open('integration/plugin.zsh', 'r') as f:
138+
print(f.read())
139+
return
140+
args.parser.print_help()
141+
142+
136143
if __name__ == '__main__':
137144
sys.exit(main())

0 commit comments

Comments
 (0)