Files
plugins/datastore/datastore.py
2021-08-25 18:10:40 +02:00

46 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
from pyln.client import Plugin, RpcError
import shelve
import os
plugin = Plugin()
def unload_store(plugin):
"""When we have a real store, we transfer our contents into it"""
try:
datastore = shelve.open('datastore_v1.dat', 'r')
except:
return
plugin.log("Emptying store into main store (resetting generations!)", level='unusual')
for k, (g, data) in datastore.items():
try:
plugin.rpc.datastore(key=[k], hex=data.hex())
except RpcError as e:
plugin.log("Failed to put {} into store: {}".format(k, e),
level='broken')
datastore.close()
plugin.log("Erasing our store", level='unusual')
os.unlink('datastore_v1.dat')
@plugin.init()
def init(options, configuration, plugin):
# If we have real datastore commands, don't load plugin.
try:
plugin.rpc.help('datastore')
unload_store(plugin)
return {'disable': 'there is a real datastore command'}
except RpcError:
pass
# Start up real plugin now
plugin.rpc.plugin_start(os.path.join(os.path.dirname(__file__),
"datastore-plugin.py"))
return {'disable': 'no builtin-datastore: plugin loaded'}
plugin.run()