Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
4e4961e6
Unverified
Commit
4e4961e6
authored
Oct 18, 2022
by
Yuval
Committed by
GitHub
Oct 18, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(aliases): add basic argument parsing (#10710)
parent
8487a553
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
6 deletions
+25
-6
README.md
plugins/aliases/README.md
+6
-0
cheatsheet.py
plugins/aliases/cheatsheet.py
+19
-6
No files found.
plugins/aliases/README.md
View file @
4e4961e6
...
...
@@ -17,6 +17,12 @@ Requirements: Python needs to be installed.
-
`acs`
: show all aliases by group.
-
`acs -h/--help`
: print help mesage.
-
`acs <keyword>`
: filter aliases by
`<keyword>`
and highlight.
-
`acs -g <group>/--group <group`
: show only aliases for group
`<group>`
. Multiple uses of the flag show all groups,
-
`acs --groups-only`
: show only group names
!
[
screenshot
](
https://cloud.githubusercontent.com/assets/3602957/11581913/cb54fb8a-9a82-11e5-846b-5a67f67ad9ad.png
)
plugins/aliases/cheatsheet.py
View file @
4e4961e6
...
...
@@ -2,6 +2,7 @@
import
sys
import
itertools
import
termcolor
import
argparse
def
parse
(
line
):
left
=
line
[
0
:
line
.
find
(
'='
)]
.
strip
()
...
...
@@ -26,7 +27,7 @@ def cheatsheet(lines):
target_aliases
.
extend
(
group_list
)
return
cheatsheet
def
pretty_print_group
(
key
,
aliases
,
highlight
=
None
):
def
pretty_print_group
(
key
,
aliases
,
highlight
=
None
,
only_groupname
=
False
):
if
len
(
aliases
)
==
0
:
return
group_hl_formatter
=
lambda
g
,
hl
:
termcolor
.
colored
(
hl
,
'yellow'
)
.
join
([
termcolor
.
colored
(
part
,
'red'
)
for
part
in
(
'[
%
s]'
%
g
)
.
split
(
hl
)])
...
...
@@ -35,21 +36,33 @@ def pretty_print_group(key, aliases, highlight=None):
alias_formatter
=
lambda
alias
:
termcolor
.
colored
(
'
\t
%
s =
%
s'
%
alias
[
0
:
2
],
'green'
)
if
highlight
and
len
(
highlight
)
>
0
:
print
(
group_hl_formatter
(
key
,
highlight
))
print
(
'
\n
'
.
join
([
alias_hl_formatter
(
alias
,
highlight
)
for
alias
in
aliases
]))
if
not
only_groupname
:
print
(
'
\n
'
.
join
([
alias_hl_formatter
(
alias
,
highlight
)
for
alias
in
aliases
]))
else
:
print
(
group_formatter
(
key
))
print
(
'
\n
'
.
join
([
alias_formatter
(
alias
)
for
alias
in
aliases
]))
if
not
only_groupname
:
print
(
'
\n
'
.
join
([
alias_formatter
(
alias
)
for
alias
in
aliases
]))
print
(
''
)
def
pretty_print
(
cheatsheet
,
wfilter
):
def
pretty_print
(
cheatsheet
,
wfilter
,
group_list
=
None
,
groups_only
=
False
):
sorted_key
=
sorted
(
cheatsheet
.
keys
())
for
key
in
sorted_key
:
if
group_list
and
key
not
in
group_list
:
continue
aliases
=
cheatsheet
.
get
(
key
)
if
not
wfilter
:
pretty_print_group
(
key
,
aliases
,
wfilter
)
pretty_print_group
(
key
,
aliases
,
wfilter
,
groups_only
)
else
:
pretty_print_group
(
key
,
[
alias
for
alias
in
aliases
if
alias
[
0
]
.
find
(
wfilter
)
>-
1
or
alias
[
1
]
.
find
(
wfilter
)
>-
1
],
wfilter
)
if
__name__
==
'__main__'
:
parser
=
argparse
.
ArgumentParser
(
description
=
"Pretty print aliases."
)
parser
.
add_argument
(
'filter'
,
nargs
=
"*"
,
help
=
"search aliases matching string"
)
parser
.
add_argument
(
'-g'
,
'--group'
,
dest
=
"group_list"
,
action
=
'append'
,
help
=
"only print aliases in given groups"
)
parser
.
add_argument
(
'--groups'
,
dest
=
'groups_only'
,
action
=
'store_true'
,
help
=
"only print alias groups"
)
args
=
parser
.
parse_args
()
lines
=
sys
.
stdin
.
readlines
()
pretty_print
(
cheatsheet
(
lines
),
sys
.
argv
[
1
]
if
len
(
sys
.
argv
)
>
1
else
None
)
group_list
=
args
.
group_list
or
None
wfilter
=
" "
.
join
(
args
.
filter
)
or
None
pretty_print
(
cheatsheet
(
lines
),
wfilter
,
group_list
,
args
.
groups_only
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment