mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-23 03:18:08 +01:00
Database(): honor NOTMUCH_CONFIG env variable for reading the standard database location.
Also replaces all Database.MODE.* defaults in the keyword arguments with their numeric replacement, they do not seem to be available yet at that time, so the python parser complained about them as being unknown.
This commit is contained in:
parent
4ed01d055a
commit
d566ae643c
1 changed files with 17 additions and 13 deletions
|
@ -1,4 +1,4 @@
|
||||||
import ctypes
|
import ctypes, os
|
||||||
from ctypes import c_int, c_char_p, c_void_p, c_uint, c_uint64, c_bool
|
from ctypes import c_int, c_char_p, c_void_p, c_uint, c_uint64, c_bool
|
||||||
from cnotmuch.globals import nmlib, STATUS, NotmuchError, Enum
|
from cnotmuch.globals import nmlib, STATUS, NotmuchError, Enum
|
||||||
import logging
|
import logging
|
||||||
|
@ -13,12 +13,12 @@ class Database(object):
|
||||||
as well. Accessing these objects will lead to segfaults and
|
as well. Accessing these objects will lead to segfaults and
|
||||||
other unexpected behavior. See above for more details.
|
other unexpected behavior. See above for more details.
|
||||||
"""
|
"""
|
||||||
MODE = Enum(['READ_ONLY','READ_WRITE'])
|
|
||||||
"""Constants: Mode in which to open the database"""
|
|
||||||
|
|
||||||
_std_db_path = None
|
_std_db_path = None
|
||||||
"""Class attribute to cache user's default database"""
|
"""Class attribute to cache user's default database"""
|
||||||
|
|
||||||
|
MODE = Enum(['READ_ONLY','READ_WRITE'])
|
||||||
|
"""Constants: Mode in which to open the database"""
|
||||||
|
|
||||||
"""notmuch_database_get_path (notmuch_database_t *database)"""
|
"""notmuch_database_get_path (notmuch_database_t *database)"""
|
||||||
_get_path = nmlib.notmuch_database_get_path
|
_get_path = nmlib.notmuch_database_get_path
|
||||||
_get_path.restype = c_char_p
|
_get_path.restype = c_char_p
|
||||||
|
@ -43,11 +43,14 @@ class Database(object):
|
||||||
_create = nmlib.notmuch_database_create
|
_create = nmlib.notmuch_database_create
|
||||||
_create.restype = c_void_p
|
_create.restype = c_void_p
|
||||||
|
|
||||||
def __init__(self, path=None, create=False, mode= MODE.READ_ONLY):
|
def __init__(self, path=None, create=False, mode= 0):
|
||||||
"""If *path* is *None*, we will try to read a users notmuch
|
"""If *path* is *None*, we will try to read a users notmuch
|
||||||
configuration and use his default database. If *create* is `True`,
|
configuration and use his configured database. The location of the
|
||||||
the database will always be created in
|
configuration file can be specified through the environment variable
|
||||||
:attr:`MODE`.READ_WRITE mode.
|
*NOTMUCH_CONFIG*, falling back to the default `~/.notmuch-config`.
|
||||||
|
|
||||||
|
If *create* is `True`, the database will always be created in
|
||||||
|
:attr:`MODE`.READ_WRITE mode. Default mode for opening is READ_ONLY.
|
||||||
|
|
||||||
:param path: Directory to open/create the database in (see
|
:param path: Directory to open/create the database in (see
|
||||||
above for behavior if `None`)
|
above for behavior if `None`)
|
||||||
|
@ -94,14 +97,14 @@ class Database(object):
|
||||||
raise NotmuchError(
|
raise NotmuchError(
|
||||||
message="Cannot create db, this Database() already has an open one.")
|
message="Cannot create db, this Database() already has an open one.")
|
||||||
|
|
||||||
res = Database._create(path, MODE.READ_WRITE)
|
res = Database._create(path, Database.MODE.READ_WRITE)
|
||||||
|
|
||||||
if res is None:
|
if res is None:
|
||||||
raise NotmuchError(
|
raise NotmuchError(
|
||||||
message="Could not create the specified database")
|
message="Could not create the specified database")
|
||||||
self._db = res
|
self._db = res
|
||||||
|
|
||||||
def open(self, path, mode= MODE.READ_ONLY):
|
def open(self, path, mode= 0):
|
||||||
"""Opens an existing database
|
"""Opens an existing database
|
||||||
|
|
||||||
This function is used by __init__() and usually does not need
|
This function is used by __init__() and usually does not need
|
||||||
|
@ -204,9 +207,10 @@ class Database(object):
|
||||||
|
|
||||||
Throws a NotmuchError if it cannot find it"""
|
Throws a NotmuchError if it cannot find it"""
|
||||||
from ConfigParser import SafeConfigParser
|
from ConfigParser import SafeConfigParser
|
||||||
import os.path
|
|
||||||
config = SafeConfigParser()
|
config = SafeConfigParser()
|
||||||
config.read(os.path.expanduser('~/.notmuch-config'))
|
conf_f = os.getenv('NOTMUCH_CONFIG',
|
||||||
|
os.path.expanduser('~/.notmuch-config'))
|
||||||
|
config.read(conf_f)
|
||||||
if not config.has_option('database','path'):
|
if not config.has_option('database','path'):
|
||||||
raise NotmuchError(message=
|
raise NotmuchError(message=
|
||||||
"No DB path specified and no user default found")
|
"No DB path specified and no user default found")
|
||||||
|
|
Loading…
Reference in a new issue