jsvn: add configuration file support
- config file will be read from ~/.jsvn - config file is a python script which can assign to various supported configuration variables
This commit is contained in:
parent
ba1030b5c6
commit
4d923cfadb
37
jsvn
37
jsvn
@ -62,6 +62,7 @@ import os
|
|||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
from subprocess import *
|
from subprocess import *
|
||||||
|
import traceback
|
||||||
|
|
||||||
STATUS_LINE_REGEX = r'[ACDIMRX?!~ ][CM ][L ][+ ][SX ][KOTB ]'
|
STATUS_LINE_REGEX = r'[ACDIMRX?!~ ][CM ][L ][+ ][SX ][KOTB ]'
|
||||||
###########################################################################
|
###########################################################################
|
||||||
@ -86,6 +87,34 @@ COLORS = {
|
|||||||
}
|
}
|
||||||
using_color = False
|
using_color = False
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# Configuration #
|
||||||
|
###########################################################################
|
||||||
|
def get_config():
|
||||||
|
config = {
|
||||||
|
'pager': 'less -FRX',
|
||||||
|
'use_pager': True,
|
||||||
|
'use_color': True,
|
||||||
|
'aliases': {},
|
||||||
|
}
|
||||||
|
pth = os.path.expanduser('~/.jsvn')
|
||||||
|
if os.path.exists(pth):
|
||||||
|
fh = open(pth, 'r')
|
||||||
|
script = fh.read()
|
||||||
|
fh.close()
|
||||||
|
try:
|
||||||
|
exec(script, config)
|
||||||
|
except:
|
||||||
|
sys.stderr.write('Configuration file error in "%s":\n' % pth)
|
||||||
|
traceback.print_exception(sys.exc_info()[0], sys.exc_info()[1],
|
||||||
|
None)
|
||||||
|
tb = traceback.extract_tb(sys.exc_info()[2])
|
||||||
|
for ent in tb[1:]:
|
||||||
|
lineno, fn = ent[1:3]
|
||||||
|
sys.stderr.write(' File "%s", line %d, in %s\n'
|
||||||
|
% (pth, lineno, fn))
|
||||||
|
return config
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
# Utility Functions #
|
# Utility Functions #
|
||||||
###########################################################################
|
###########################################################################
|
||||||
@ -644,11 +673,13 @@ def root(argv, svn, out):
|
|||||||
###########################################################################
|
###########################################################################
|
||||||
def main(argv):
|
def main(argv):
|
||||||
global using_color
|
global using_color
|
||||||
|
|
||||||
|
config = get_config()
|
||||||
realsvn = findInPath('svn')
|
realsvn = findInPath('svn')
|
||||||
out = sys.stdout
|
out = sys.stdout
|
||||||
using_pager = False
|
using_pager = False
|
||||||
using_color = sys.stdout.isatty()
|
using_color = sys.stdout.isatty() and config['use_color']
|
||||||
if sys.stdout.isatty():
|
if sys.stdout.isatty() and config['use_pager']:
|
||||||
if (len(argv) >= 1 and argv[0] in
|
if (len(argv) >= 1 and argv[0] in
|
||||||
('blame', 'praise', 'annotate', 'ann',
|
('blame', 'praise', 'annotate', 'ann',
|
||||||
'cat',
|
'cat',
|
||||||
@ -658,7 +689,7 @@ def main(argv):
|
|||||||
'log',
|
'log',
|
||||||
'propget', 'pget', 'pg',
|
'propget', 'pget', 'pg',
|
||||||
'proplist', 'plist', 'pl')):
|
'proplist', 'plist', 'pl')):
|
||||||
pager = 'less -FRX'
|
pager = config['pager']
|
||||||
if 'PAGER' in os.environ and os.environ['PAGER'] != '':
|
if 'PAGER' in os.environ and os.environ['PAGER'] != '':
|
||||||
pager = os.environ['PAGER']
|
pager = os.environ['PAGER']
|
||||||
pager_proc = Popen(pager, shell=True, stdin=PIPE)
|
pager_proc = Popen(pager, shell=True, stdin=PIPE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user