Coordinate locking resources for humans and machines, using a simple sqlite DB
There is a CLI for machines and admins and a minimal tk GUI for lock&release.
usage: lockmyresource [-h] [--dbfile DBFILE] [--debug] {list,lock,release} ...
Lock some resources
positional arguments:
{list,lock,release} Commands
list List resources
lock Lock a resource
release Release a resource
optional arguments:
-h, --help show this help message and exit
--dbfile DBFILE Database to use
--debug
NOTE that the current user's username will be used for all operations.
NOTE the db will be created if it does not yet exist
usage: lockmyresource list [-h] [--format {text,csv,json}]
$ lockmyresource list
Resource User Locked_at Comment
fork1 Hegel 2021-01-17 11:42:36.459921 Ideally, I can use fork1
fork2 Kant 2021-01-17 11:52:13.768924 Can't take fork1, I guess
spoon None None None
usage: lockmyresource lock [-h] resource comment
NOTE that the comment is mandatory.
NOTE that deletion of resources is not yet implemented, you need to manipulate the sqlite DB manually for now
$ lockmyresource lock fork1 'To eat or not to eat...'
Obtained lock for Resource(name='fork1')
usage: lockmyresource release [-h] resource
NOTE That only the locking user can release a lock.
$ lockmyresource release fork1
Released lock for Resource(name='fork1')
usage: lockmyresource subscribe resource [shell-command]
NOTE Will not wait if it is the current user who has locked the resource
$ lockmyresource subscribe fork1 && aplay tada.wav
$ lockmyresource subscribe fork2 'start trigger.bat' --interval=10