From e58a0d0d2f395cbb3d7894b81a1e3ed2692314ec Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 16 Jun 2024 12:19:06 +0200 Subject: flatpak: install freecad via flatpak allow multiple command shortcuts per app --- roles/ws/flatpak/defaults/main.yml | 5 ++++- roles/ws/flatpak/filter_plugins/flatpak.py | 28 ++++++++++++++++++++++++++++ roles/ws/flatpak/tasks/main.yml | 9 ++++----- 3 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 roles/ws/flatpak/filter_plugins/flatpak.py (limited to 'roles') diff --git a/roles/ws/flatpak/defaults/main.yml b/roles/ws/flatpak/defaults/main.yml index e66d4118..77f1f39d 100644 --- a/roles/ws/flatpak/defaults/main.yml +++ b/roles/ws/flatpak/defaults/main.yml @@ -6,5 +6,8 @@ ws_flatpak_apps: [] # ws_flatpak_apps: # - name: com.example.foo # remote: foo -# link: foo +# shortcuts: +# - name: foo +# - name: foo-blub +# command: blub # - name: com.example.bar diff --git a/roles/ws/flatpak/filter_plugins/flatpak.py b/roles/ws/flatpak/filter_plugins/flatpak.py new file mode 100644 index 00000000..0ed372ee --- /dev/null +++ b/roles/ws/flatpak/filter_plugins/flatpak.py @@ -0,0 +1,28 @@ +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +from ansible import errors + + +def flatpak_app_shortcuts(apps): + try: + shortcuts = [] + for app in apps: + if 'shortcuts' not in app: + continue + for shortcut in app['shortcuts']: + shortcut['app'] = app['name'] + shortcuts.append(shortcut) + return shortcuts + except Exception as e: + raise errors.AnsibleFilterError("flatpak_app_shortcuts(): %s" % str(e)) + + +class FilterModule(object): + + filter_map = { + 'flatpak_app_shortcuts': flatpak_app_shortcuts, + } + + def filters(self): + return self.filter_map diff --git a/roles/ws/flatpak/tasks/main.yml b/roles/ws/flatpak/tasks/main.yml index 5229996c..e88be377 100644 --- a/roles/ws/flatpak/tasks/main.yml +++ b/roles/ws/flatpak/tasks/main.yml @@ -23,13 +23,12 @@ state: present - name: install simple run script to /usr/local/bin - loop: "{{ ws_flatpak_apps | selectattr('link', 'defined') }}" + loop: "{{ ws_flatpak_apps | flatpak_app_shortcuts }}" loop_control: - label: "{{ item.name }}" + label: "{{ item.name }} -> {{ item.app }}" copy: content: | #!/bin/sh - - exec flatpak run "{{ item.name }}" - dest: "/usr/local/bin/{{ item.link }}" + exec flatpak run{% if 'command' in item %} "--command={{ item.command }}"{% endif %} "{{ item.app }}" + dest: "/usr/local/bin/{{ item.name }}" mode: 0755 -- cgit v1.2.3