mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
16e7862fe1
This decorator will be used in other contexts in upcoming patches.
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""Compatibility functions for old Mercurial versions and other utility
|
|
functions."""
|
|
from dulwich import errors
|
|
try:
|
|
from collections import OrderedDict
|
|
except ImportError:
|
|
from ordereddict import OrderedDict
|
|
|
|
def parse_hgsub(lines):
|
|
"""Fills OrderedDict with hgsub file content passed as list of lines"""
|
|
rv = OrderedDict()
|
|
for l in lines:
|
|
ls = l.strip();
|
|
if not ls or ls[0] == '#': continue
|
|
name, value = l.split('=', 1)
|
|
rv[name.strip()] = value.strip()
|
|
return rv
|
|
|
|
def serialize_hgsub(data):
|
|
"""Produces a string from OrderedDict hgsub content"""
|
|
return ''.join(['%s = %s\n' % (n,v) for n,v in data.iteritems()])
|
|
|
|
def parse_hgsubstate(lines):
|
|
"""Fills OrderedDict with hgsubtate file content passed as list of lines"""
|
|
rv = OrderedDict()
|
|
for l in lines:
|
|
ls = l.strip();
|
|
if not ls or ls[0] == '#': continue
|
|
value, name = l.split(' ', 1)
|
|
rv[name.strip()] = value.strip()
|
|
return rv
|
|
|
|
def serialize_hgsubstate(data):
|
|
"""Produces a string from OrderedDict hgsubstate content"""
|
|
return ''.join(['%s %s\n' % (data[n], n) for n in sorted(data)])
|
|
|
|
def transform_notgit(f):
|
|
'''use as a decorator around functions and methods that call into dulwich'''
|
|
def inner(*args, **kwargs):
|
|
try:
|
|
return f(*args, **kwargs)
|
|
except errors.NotGitRepository:
|
|
raise util.Abort('not a git repository')
|
|
return inner
|