60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
import os
|
|
from uuid import uuid4
|
|
|
|
import albert
|
|
|
|
md_iid = '5.0'
|
|
md_name = "UUID Generator"
|
|
md_description = "Generate version 4 UUID(s)"
|
|
md_version = "1.0.0"
|
|
md_license = "MIT"
|
|
md_url = "https://gitea.felix-boers.de/fboers/albert-plugin-python-uuid-generator"
|
|
md_authors = ["@felixboers"]
|
|
md_maintainers = ["@felixboers"]
|
|
|
|
icon_path = os.path.dirname(__file__)+"/uuid.svg"
|
|
|
|
def expand_uuid_formats(uuid: str):
|
|
return [
|
|
uuid,
|
|
uuid.replace('-', ''),
|
|
"{" + uuid + "}"
|
|
]
|
|
|
|
def build_query_items(uuids):
|
|
results = []
|
|
for uuid in uuids:
|
|
results.append(
|
|
albert.StandardItem(
|
|
id='uuid',
|
|
text=uuid,
|
|
icon_factory=lambda: albert.Icon.image(icon_path),
|
|
subtext=uuid,
|
|
actions=[
|
|
albert.Action(
|
|
'copy',
|
|
'Copy uuid to clipboard',
|
|
lambda id_=uuid: albert.setClipboardText(id_)
|
|
)
|
|
]
|
|
)
|
|
)
|
|
return results
|
|
|
|
class Plugin(albert.PluginInstance, albert.GeneratorQueryHandler):
|
|
|
|
def __init__(self):
|
|
albert.PluginInstance.__init__(self)
|
|
albert.GeneratorQueryHandler.__init__(self)
|
|
|
|
def defaultTrigger(self):
|
|
return 'uuid '
|
|
|
|
def items(self, ctx):
|
|
if not ctx.isValid:
|
|
return
|
|
uuid = str(uuid4())
|
|
formats = expand_uuid_formats(uuid)
|
|
yield [i for i in build_query_items(formats)]
|