diff --git a/cheat b/cheat index a732faf..fa65eee 100755 --- a/cheat +++ b/cheat @@ -62,11 +62,19 @@ def cheat_directories(): def cheat_files(cheat_directories): "Assembles a dictionary of cheatsheets found in the above directories." cheats = {} - for cheat_dir in reversed(cheat_directories): - cheats.update(dict([(cheat, cheat_dir) - for cheat in os.listdir(cheat_dir) - if not cheat.startswith('.') - and not cheat.startswith('__')])) + queue = cheat_directories[:] + while queue: + cheat_dir = queue.pop() + for cheat in os.listdir(cheat_dir): + if not cheat.startswith('.') and not cheat.startswith('__'): + cheat_path = os.path.join(cheat_dir, cheat) + if os.path.isdir(cheat_path): + # recurse subdirectory + sub_dir = os.path.join(cheat_dir, cheat) + queue.append(sub_dir) + else: + cheats[cheat] = cheat_dir + return cheats def edit_cheatsheet(cheat, cheatsheets):