rewtguy/pidgin

Collapsed revision
draft history-api tip
2021-10-08, Gary Kramlich
00e6f98b4243
file isExecutable
Collapsed revision
* Bootstrap the PurpleHistoryAdapter class
* HistoryApi - added name property and added write, query, remove methods
* Fix minor issues in purplehistoryadapter.
* Add unit tests for purple_history_adapter. Initial scaffolding for purple_history_manager.
* Add history manager. Start of adding unit tests for history manager. Slight modification of formatting of test_histroy_adapter. Add classes to POTFILES.in.
* Updates to history manager and unit tests
* Add test_purple_history_manager.c
* Fixed history manager and unit tests. Should be in a better state now.
* Fixed missing curly brace in history manager.
* Made changes to purplehistorymanager.h documentation.
* Add a dependency on sqlite3. 3.27.0 is kind of an arbitrary version we can adjust if necessary.
* Update _purple_conversation_write_common to use the history api.
* Initial implementation of purplesqlitehistoryadapter
* Add in activate and deactivate for purplesqlitehistoryadapter
* Embed our sqlite history schema into libpurple and run it during startup
* Implement shutdown in purplehistorymanager, implement write in purplesqlitehistoryadapter, modify schema for history adapter.
* Finish purplesqlitehistoryadapter write functionality. Changed api to include PurpleConversation.
* History API - flushed out sqlite query builder, query, and remove.
* Create a stub purple-history command line tool
* Add a simple cli for the history api and fix a few bugs
* Fixed signatures for query and remove
* Fixed memory leaks in sqlite history adapter
* Add remove function in purplehistorycore and update unit test for history adapter
* Fixed purple history core not printing results from query
* Addressed PR comments
* Add additional docs, fixed error messages, finished implementing query in purple history.
* Addressed PR comments. Fixed style, some objects weren't being dereferenced but now are, fixed issues in documentation.
* Fixed docs, grouped sqlite3 dependency check with libpurple, enabled g_option set help for history core.
* Fixed style issues. Fixed unfreed references. Add in checks against empty strings for sqlite adapter. Fixed documentation.
* Address PR comments. Fixed incorrect parameters in activate signal. Fix some styling problems. Removed unnecessary frees. Fixed compiler warnings.
* Address additional PR comments for history adapter.
* Address review findings
* Fix up the unit tests
#!/usr/bin/env python3
#
# Purple is the legal property of its developers, whose names are too numerous
# to list here. Please refer to the COPYRIGHT file distributed with this
# source distribution.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
"""
Produce meson-config.h in a build directory.
This should not really be run manually. It is used by Meson as a
post-configuration script to create meson-config.h which for now simply
contains information about the configuration used to create the build
directory.
"""
import html
import json
import os
import shlex
import subprocess
import sys
try:
introspect = os.environ['MESONINTROSPECT']
except KeyError:
print('Meson is too old; '
'it does not set MESONINTROSPECT for postconf scripts.')
sys.exit(1)
else:
introspect = shlex.split(introspect)
try:
build_root = os.environ['MESON_BUILD_ROOT']
except KeyError:
print('Meson is too old; '
'it does not set MESON_BUILD_ROOT for postconf scripts.')
sys.exit(1)
def tostr(obj):
if isinstance(obj, str):
return html.escape(repr(obj))
else:
return repr(obj)
conf = subprocess.check_output(introspect + ['--buildoptions', build_root],
universal_newlines=True)
conf = json.loads(conf)
settings = ' '.join('{}={}'.format(option['name'], tostr(option['value']))
for option in sorted(conf, key=lambda x: x['name']))
with open(os.path.join(build_root, 'meson-config.h'), 'w') as f:
f.write('#define MESON_ARGS "{}"'.format(settings))