From 0b71c22019310b717ef628ec6a6dd50d3c72023a Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Fri, 2 Jun 2023 20:02:16 +0100 Subject: [PATCH] Add RedHat support to the obsidian role --- roles/obsidian/handlers/main.yaml | 5 ++ roles/obsidian/tasks/Darwin.yaml | 6 +-- roles/obsidian/tasks/RedHat.yaml | 48 ++++++++++++++++++++ roles/obsidian/tasks/Unix.yaml | 6 +++ roles/obsidian/templates/obsidian.desktop.j2 | 11 +++++ 5 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 roles/obsidian/handlers/main.yaml create mode 100644 roles/obsidian/tasks/RedHat.yaml create mode 100644 roles/obsidian/tasks/Unix.yaml create mode 100644 roles/obsidian/templates/obsidian.desktop.j2 diff --git a/roles/obsidian/handlers/main.yaml b/roles/obsidian/handlers/main.yaml new file mode 100644 index 0000000..6e4126c --- /dev/null +++ b/roles/obsidian/handlers/main.yaml @@ -0,0 +1,5 @@ +--- +- name: install desktop menu + command: > + xdg-desktop-menu install --mode user + {{ansible_env.HOME}}/.local/share/applications/obsidian-obsidian.desktop diff --git a/roles/obsidian/tasks/Darwin.yaml b/roles/obsidian/tasks/Darwin.yaml index 68ea2e4..016e6d7 100644 --- a/roles/obsidian/tasks/Darwin.yaml +++ b/roles/obsidian/tasks/Darwin.yaml @@ -4,8 +4,4 @@ name: obsidian state: latest -- name: clone notes repository - git: - repo: git@github.com:kbenzie/notes.git - dest: '{{ansible_env.HOME}}/Documents/Notes' - version: main +- include_tasks: Unix.yaml diff --git a/roles/obsidian/tasks/RedHat.yaml b/roles/obsidian/tasks/RedHat.yaml new file mode 100644 index 0000000..a4abfa6 --- /dev/null +++ b/roles/obsidian/tasks/RedHat.yaml @@ -0,0 +1,48 @@ +--- +- name: stat symlink + stat: + path: '{{ansible_env.HOME}}/.local/bin/Obsidian' + register: symlink_file + +- name: get latest release + uri: + url: https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest + register: latest + +- set_fact: + appimage: 'Obsidian-{{latest.json.name}}.AppImage' +- set_fact: + filepath: '{{ansible_env.HOME}}/.local/bin/{{appimage}}' + asset_query: '[?contains(name, `{{appimage}}`)] | [0]' +- set_fact: + needs_installed: + '{{not symlink_file.stat.exists or symlink_file.stat.lnk_source != filepath}}' + asset: '{{latest.json.assets | to_json | from_json | json_query(asset_query)}}' + +- name: download latest version + get_url: + url: '{{asset.browser_download_url}}' + dest: '{{filepath}}' + mode: '0755' + +- name: create symlink + file: + src: '{{filepath}}' + dest: '{{ansible_env.HOME}}/.local/bin/Obsidian' + state: link + +# TODO: icon for desktop file + +- name: create desktop file + template: + src: obsidian.desktop.j2 + dest: '{{ansible_env.HOME}}/.local/share/applications/obsidian-obsidian.desktop' + notify: install desktop menu + +- name: remove old appimage + when: needs_installed and symlink_file.stat.exists + file: + path: '{{symlink_file.stat.lnk_source}}' + state: absent + +- include_tasks: Unix.yaml diff --git a/roles/obsidian/tasks/Unix.yaml b/roles/obsidian/tasks/Unix.yaml new file mode 100644 index 0000000..a09ec85 --- /dev/null +++ b/roles/obsidian/tasks/Unix.yaml @@ -0,0 +1,6 @@ +--- +- name: clone notes repository + git: + repo: git@github.com:kbenzie/notes.git + dest: '{{ansible_env.HOME}}/Documents/Notes' + version: main diff --git a/roles/obsidian/templates/obsidian.desktop.j2 b/roles/obsidian/templates/obsidian.desktop.j2 new file mode 100644 index 0000000..d968bfb --- /dev/null +++ b/roles/obsidian/templates/obsidian.desktop.j2 @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Obsidian +Exec={{ansible_env.HOME}}/.local/bin/Obsidian +Terminal=false +Type=Application +Icon=obsidian +StartupWMClass=Obsidian +X-AppImage-Version={{latest.json.name}} +Comment=Private and flexible note‑taking app that adapts to the way you think. +MimeType=x-scheme-handler/obsidian; +Categories=Utility;