mirror of
https://github.com/Erreur32/cheat.git
synced 2024-10-07 02:23:59 +02:00
f46698b656
Performed an extensive refactoring on the entire application for the sake of code-cleanliness. - Refactored out of an ad-hoc Imperative paradigm into more of a functional/declarative paradigm. IMO, this makes the application signifcantly easier to understand. - Moved away from `argparse` and into `docopt` for argument parsing - Version bump to 2.0.0 - Performed extensive refactoring on the setup.py script. Script should install to the system more cleanly now. - Made minor formatting changes to the --list flag output - Updated the README Squashed commit of the following: commit e5681bd536aa0220cdeb7884cc248db55be408c9 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 23:30:21 2014 -0400 Fixed many bugs Everything seems to work now, I think. commit 764ec5950cee958eb1b8333ddfcb6bcd45c28429 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 21:51:31 2014 -0400 Restructuring for the sake of setup.py Seem to finally have a working install script commit 5a866c23857b77ec65070dd8023cd734f2b7c242 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 18:01:11 2014 -0400 Nits commit a79954ba5b33d992fa6a32abffb33b161d624e3d Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 17:53:03 2014 -0400 Implemented search commit b570a897e9a12c15affe1a72628deae31836dee2 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 17:11:27 2014 -0400 Nits commit 1a8d85b44457f1b2131b3e8475c5270b5d0899e3 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 17:02:22 2014 -0400 Still refactoring across files Trying to make the program structure clearer commit 34dffd6462e492e81ea558e2009a71051b7663c9 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 16:40:37 2014 -0400 Breaking app into several files This is for the sake of code-cleanliness commit 4825d678ff5f9817ccbf727ef71e5dea15ff2586 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 15:55:19 2014 -0400 Got syntax highlighting working commit c37d7a626d451bfca3d4a072eb9fed604085170f Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 15:29:22 2014 -0400 Reduced verbosity of function names commit 8e626045186b37dce2480f5af1994ddfa8db79b5 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 15:24:41 2014 -0400 Refactored argument passing Fewer arguments now need to be passed throughout the app. commit 807ba814650010b3dd1b59d27400b3fb4fcfede7 Author: Chris Lane <chris@chris-allen-lane.com> Date: Sat Apr 26 11:40:05 2014 -0400 Working through the refactor commit e34e6540d4f8cd727e98aac68289d515a02d5fe6 Author: Chris Lane <chris@chris-allen-lane.com> Date: Thu Apr 24 20:00:10 2014 -0400 Got a basic end-to-end refactor working Have re-implemented just the most basic functionality in the "cheat2" file.
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
import os
|
|
import sys
|
|
|
|
|
|
def colorize(sheet_content):
|
|
""" Colorizes cheatsheet content if so configured """
|
|
|
|
# only colorize if so configured
|
|
if not 'CHEATCOLORS' in os.environ:
|
|
return sheet_content
|
|
|
|
try:
|
|
from pygments import highlight
|
|
from pygments.lexers import BashLexer
|
|
from pygments.formatters import TerminalFormatter
|
|
|
|
# if pygments can't load, just return the uncolorized text
|
|
except ImportError:
|
|
return sheet_content
|
|
|
|
return highlight(sheet_content, BashLexer(), TerminalFormatter())
|
|
|
|
|
|
def die(message):
|
|
""" Prints a message to stderr and then terminates """
|
|
warn (message)
|
|
exit(1)
|
|
|
|
|
|
def editor():
|
|
""" Determines the user's preferred editor """
|
|
if 'EDITOR' not in os.environ:
|
|
die(
|
|
'In order to create/edit a cheatsheet you must set your EDITOR '
|
|
'environment variable to your editor\'s path.'
|
|
)
|
|
|
|
elif os.environ['EDITOR'] == "":
|
|
die(
|
|
'Your EDITOR environment variable is set to an empty string. It must '
|
|
'be set to your editor\'s path.'
|
|
)
|
|
|
|
else:
|
|
return os.environ['EDITOR']
|
|
|
|
|
|
def prompt_yes_or_no(question):
|
|
""" Prompts the user with a yes-or-no question """
|
|
print(question)
|
|
return raw_input('[y/n] ') == 'y'
|
|
|
|
|
|
def warn(message):
|
|
""" Prints a message to stderr """
|
|
print >> sys.stderr, (message)
|