Merge branch 'master' of https://github.com/0rax/cheat into 0rax-master

* 'master' of https://github.com/0rax/cheat:
  Added 1 check for EDITOR var, if EDITOR is set to "" + added try catch to catch subprocess error like EDITOR variable pointing to a non installed editor
  Split EDITOR variable to prevent error on popen while using EDITOR var with spaces
  prepare to merge
  Revert Print back to main, would be easier to integrate other positional option like that
This commit is contained in:
Chris Lane 2013-09-23 20:44:41 -04:00
commit 545c35722a
1 changed files with 30 additions and 21 deletions

51
cheat
View File

@ -69,7 +69,7 @@ class CheatSheets(object):
if not self.dirs:
error_msg = 'The {default} dir does not exist or the CHEATPATH var is not set.'
print >> sys.stderr, error_msg.format(default=DEFAULT_CHEAT_DIR)
exit()
exit(1)
self.sheets = self.__cheat_files()
def __cheat_directories(self):
@ -106,29 +106,38 @@ class CheatSheets(object):
# Assert that the EDITOR environment variable is set and that at least 3
# arguments have been given
if 'EDITOR' not in os.environ:
print('In order to use "create" or "edit" you must set your '
'EDITOR environment variable to your favorite editor\'s path')
exit()
# if the cheatsheet already exists, open it for editing
if cheat in sheets.sheets:
subprocess.call([os.environ['EDITOR'],
os.path.join(self.sheets[cheat], cheat)])
# otherwise, create it
print >> sys.stderr, ('In order to create/edit a cheatsheet you '
'must set your EDITOR environment variable to your favorite '
'editor\'s path.')
exit(1)
elif os.environ['EDITOR'] == "":
print >> sys.stderr, ('Your EDITOR environment variable is set '
'to nothing, in order to create/edit a cheatsheet your must '
'set it to a valid editor\'s path.')
exit(1)
else:
import cheatsheets as cs
# Attempt to write the new cheatsheet to the user's ~/.cheat dir if it
# exists. If it does not exist, attempt to create it.
if os.access(DEFAULT_CHEAT_DIR, os.W_OK) or os.makedirs(DEFAULT_CHEAT_DIR):
subprocess.call([os.environ['EDITOR'],
os.path.join(DEFAULT_CHEAT_DIR, cheat)])
editor = os.environ['EDITOR'].split()
# if the cheatsheet already exists, open it for editing
try:
if cheat in sheets.sheets:
subprocess.call(editor + [os.path.join(self.sheets[cheat], cheat)])
# If the directory cannot be created, write to the python package
# directory, though that will likely require the use of sudo
# otherwise, create it
else:
subprocess.call([os.environ['EDITOR'],
os.path.join(cs.cheat_dir, cheat)])
import cheatsheets as cs
# Attempt to write the new cheatsheet to the user's ~/.cheat dir if it
# exists. If it does not exist, attempt to create it.
if os.access(DEFAULT_CHEAT_DIR, os.W_OK) or os.makedirs(DEFAULT_CHEAT_DIR):
subprocess.call(editor + [os.path.join(DEFAULT_CHEAT_DIR, cheat)])
# If the directory cannot be created, write to the python package
# directory, though that will likely require the use of sudo
else:
subprocess.call(editor + [os.path.join(cs.cheat_dir, cheat)])
except OSError, e:
print >> sys.stderr, ("Could not launch `%s` as your editor : %s"
% (editor[0], e.strerror))
exit(1)
def list(self):
"""Lists the cheatsheets that are currently available"""