repository: define existing interface for file storage
Now that we have mostly successfully implemented an alternate
storage backend for files data, let's start to define the
interface for it!
This commit takes the mostly-working interface as defined by the
simple store repo and codifies it as the file storage interface.
The interface has been split into its logical components:
* index metadata
* fulltext data
* mutation
* everything else
I don't consider the existing interface to be great. But it will
help to have it more formally defined so we can start chipping away
at refactoring it.
Differential Revision: https://phab.mercurial-scm.org/D3148
from __future__ import absolute_import, print_function
import os
from mercurial import (
dispatch,
ui as uimod,
)
# ensure errors aren't buffered
testui = uimod.ui()
testui.pushbuffer()
testui.write((b'buffered\n'))
testui.warn((b'warning\n'))
testui.write_err(b'error\n')
print(repr(testui.popbuffer()))
# test dispatch.dispatch with the same ui object
hgrc = open(os.environ["HGRCPATH"], 'wb')
hgrc.write(b'[extensions]\n')
hgrc.write(b'color=\n')
hgrc.close()
ui_ = uimod.ui.load()
ui_.setconfig(b'ui', b'formatted', b'True')
# we're not interested in the output, so write that to devnull
ui_.fout = open(os.devnull, 'wb')
# call some arbitrary command just so we go through
# color's wrapped _runcommand twice.
def runcmd():
dispatch.dispatch(dispatch.request([b'version', b'-q'], ui_))
runcmd()
print("colored? %s" % (ui_._colormode is not None))
runcmd()
print("colored? %s" % (ui_._colormode is not None))