mirror of
https://github.com/Erreur32/cheat.git
synced 2024-12-23 06:02:12 +01:00
Added search function into cheat, used a grep like output, if needed it could be changed, discussion is open inside #128 issue
This commit is contained in:
parent
b1df8fe3cc
commit
b1212052f7
1 changed files with 18 additions and 0 deletions
18
cheat
18
cheat
|
@ -65,6 +65,7 @@ class CheatSheets(object):
|
|||
dirs = None
|
||||
sheets = None
|
||||
|
||||
|
||||
def __init__(self):
|
||||
self.dirs = self.__cheat_directories()
|
||||
# verify that we have at least one cheat directory
|
||||
|
@ -178,6 +179,13 @@ class CheatSheets(object):
|
|||
return ('\n'.join(sorted(['%s [%s]' % (key.ljust(max_command), value)
|
||||
for key, value in self.sheets.items()])))
|
||||
|
||||
def search(self, term):
|
||||
for sheet, sheet_dir in self.sheets.iteritems():
|
||||
path = os.path.join(sheet_dir, sheet)
|
||||
with open(path) as f:
|
||||
for line in f.readlines():
|
||||
if term in line:
|
||||
print sheet + ':', line,
|
||||
|
||||
# Custom action for argparse
|
||||
class ListDirectories(argparse.Action):
|
||||
|
@ -201,6 +209,13 @@ class EditSheet(argparse.Action):
|
|||
parser.exit()
|
||||
|
||||
|
||||
class SearchSheet(argparse.Action):
|
||||
"""If the user wants to search a term inside all cheatsheets"""
|
||||
def __call__(self, parser, namespace, values, option_string=None):
|
||||
sheets.search(values[0])
|
||||
parser.exit()
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
global sheets
|
||||
|
@ -239,6 +254,9 @@ def main():
|
|||
parser_group.add_argument('-e', '--edit', metavar='cheatsheet',
|
||||
action=EditSheet, type=str, nargs=1,
|
||||
help='Edit <cheatsheet>')
|
||||
parser_group.add_argument('-s', '--search', metavar='term',
|
||||
action=SearchSheet, type=str, nargs=1,
|
||||
help='Search <term> inside all cheatsheets')
|
||||
parser_group.add_argument('-l', '--list',
|
||||
action=ListCheatsheets, nargs=0,
|
||||
help='List all available cheatsheets')
|
||||
|
|
Loading…
Reference in a new issue