用于在快照中与快照系统交互的帮助程序
snap-helpers的Python项目详细描述
从快照内部与快照配置和属性交互的python库。
它公开了一个顶级的snaphelpers.Snap对象,该对象提供对:
快照详细信息:
>>>snap=snaphelpers.Snap()>>>snap.name'testapp'>>>snap.instance_name'testapp'>>>snap.version'0+git.fdf80cd'>>>snap.revision'x1'
路径:
>>>snap.paths.commonPosixPath('/var/snap/testapp/common')>>>snap.paths.dataPosixPath('/var/snap/testapp/x1')>>>snap.paths.snapPosixPath('/snap/testapp/x1')>>>snap.paths.user_commonPosixPath('/home/ack/snap/testapp/common')>>>snap.paths.user_dataPosixPath('/home/ack/snap/testapp/x1')
快照相关的环境变量:
>>>pprint.pprint(dict(snap.environ)){'ARCH':'amd64','COMMON':'/var/snap/testapp/common','CONTEXT':'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890','COOKIE':'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890','DATA':'/var/snap/testapp/x1','INSTANCE_KEY':'','INSTANCE_NAME':'testapp','LIBRARY_PATH':'/var/lib/snapd/lib/gl:/var/lib/snapd/lib/gl32:/var/lib/snapd/void','NAME':'testapp','REEXEC':'','REVISION':'x1','SNAP':'/snap/testapp/x1','USER_COMMON':'/home/ack/snap/testapp/common','USER_DATA':'/home/ack/snap/testapp/x1','VERSION':'0+git.fdf80cd'}>>>snap.environ.ARCH'amd64'
配置选项:
>>>snap.config.set({'foo.bar':'baz','asdf':3})# this needs to be run as root>>>options=snap.config.get_options('foo','asdf')>>>options['foo']{'bar':'baz'}>>>options['foo.bar']'baz'>>>options['asdf']3>>>options.as_dict(){'asdf':3,'foo':{'bar':'baz'}}
挂钩辅助对象
库提供了在设置捕捉挂钩时减少样板文件的帮助程序。
钩子可以通过简单地将函数注册为钩子来定义 entry_points在应用程序中setup.py:
setup(# ...entry_points={'snaphelpers.hooks':['configure = testapp:configure_hook','install = testapp:install_hook']})
使用Snapobject作为参数调用钩子函数:
definstall_hook(snap:snaphelpers.Snap):# ...defconfigure_hook(snap:snaphelpers.Snap):# ...
snap-helpers将负责hooks管道(即创建hook文件 在$SNAP/snap/hooks中。
使用快照进行测试
snap-helperssnap提供了一种使用中的库轻松测试代码的方法。 一个有严格限制的环境。
它提供python和ipython命令:
$ snap-helpers.python -c 'from pprint import pprint; import snaphelpers; pprint(dict(snaphelpers.SnapEnviron()))' {'ARCH': 'amd64', 'COMMON': '/var/snap/snap-helpers/common', 'CONTEXT': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', 'COOKIE': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', 'DATA': '/var/snap/snap-helpers/x1', 'INSTANCE_KEY': '', 'INSTANCE_NAME': 'snap-helpers', 'LIBRARY_PATH': '/var/lib/snapd/lib/gl:/var/lib/snapd/lib/gl32:/var/lib/snapd/void', 'NAME': 'snap-helpers', 'REEXEC': '', 'REVISION': 'x1', 'SNAP': '/snap/snap-helpers/x1', 'USER_COMMON': '/home/ack/snap/snap-helpers/common', 'USER_DATA': '/home/ack/snap/snap-helpers/x1', 'VERSION': '0+git.26e1e9d'}
可以按如下方式构建和安装快照:
$ snapcraft $ sudo snap install --dangerous snap-helpers_*.snap
文档
完整的文档可以在ReadTheDocs上找到。