From 66575e6d8000dc702a9388171fa22bdcb7ac06a6 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Wed, 12 Aug 2026 10:10:06 +0200 Subject: [PATCH] Install croc separately on WSL --- .../inventory/group_vars/workstation_dev.yml | 1 - .../group_vars/workstation_dev_wsl.yml | 3 +- ansible/roles/packages_ubuntu/tasks/main.yml | 102 ++++++++++++++++++ 3 files changed, 104 insertions(+), 2 deletions(-) diff --git a/ansible/inventory/group_vars/workstation_dev.yml b/ansible/inventory/group_vars/workstation_dev.yml index bb85738..a73c858 100644 --- a/ansible/inventory/group_vars/workstation_dev.yml +++ b/ansible/inventory/group_vars/workstation_dev.yml @@ -1,6 +1,5 @@ --- workstation_dev_packages: - - croc - distrobox - gnupg - gpg-agent diff --git a/ansible/inventory/group_vars/workstation_dev_wsl.yml b/ansible/inventory/group_vars/workstation_dev_wsl.yml index 40a0446..4410348 100644 --- a/ansible/inventory/group_vars/workstation_dev_wsl.yml +++ b/ansible/inventory/group_vars/workstation_dev_wsl.yml @@ -3,7 +3,6 @@ enabled_services: - docker workstation_dev_wsl_packages: - - croc - lazygit - pinentry-curses - python3-pip @@ -18,6 +17,8 @@ workstation_dev_wsl_excluded_packages: - yubikey-manager workstation_is_wsl: true workstation_manage_google_chrome: false +workstation_manage_croc: true +workstation_croc_version: v11.0.3 workstation_removed_snap_packages: [] workstation_snap_packages: [] workstation_dev_wsl_python_packages: [] diff --git a/ansible/roles/packages_ubuntu/tasks/main.yml b/ansible/roles/packages_ubuntu/tasks/main.yml index 3760b04..945a3c8 100644 --- a/ansible/roles/packages_ubuntu/tasks/main.yml +++ b/ansible/roles/packages_ubuntu/tasks/main.yml @@ -167,6 +167,108 @@ append: true when: (ubuntu_docker_packages | default([])) | length > 0 +- name: Ensure architecture is supported for croc GitHub release + tags: [packages] + ansible.builtin.fail: + msg: "Unsupported architecture {{ ansible_facts['architecture'] }} for croc GitHub release" + when: + - workstation_manage_croc | default(false) + - ansible_facts['architecture'] not in ['x86_64', 'aarch64', 'arm64'] + +- name: Read installed croc version + tags: [packages] + ansible.builtin.command: /usr/local/bin/croc --version + register: croc_version_check + changed_when: false + failed_when: false + check_mode: false + when: workstation_manage_croc | default(false) + +- name: Ensure temporary croc extraction directory is absent + tags: [packages] + ansible.builtin.file: + path: "/tmp/croc_{{ workstation_croc_version }}" + state: absent + when: + - workstation_manage_croc | default(false) + - workstation_croc_version not in (croc_version_check.stdout | default('')) + +- name: Create temporary croc extraction directory + tags: [packages] + ansible.builtin.file: + path: "/tmp/croc_{{ workstation_croc_version }}" + state: directory + owner: root + group: root + mode: "0755" + when: + - workstation_manage_croc | default(false) + - workstation_croc_version not in (croc_version_check.stdout | default('')) + +- name: Download croc GitHub release archive + tags: [packages] + ansible.builtin.get_url: + url: >- + {{ + 'https://github.com/schollz/croc/releases/download/' + ~ workstation_croc_version + ~ '/croc_' + ~ workstation_croc_version + ~ '_Linux-' + ~ ( + '64bit' if ansible_facts['architecture'] == 'x86_64' + else 'ARM64' if ansible_facts['architecture'] in ['aarch64', 'arm64'] + else ansible_facts['architecture'] + ) + ~ '.tar.gz' + }} + dest: "/tmp/croc_{{ workstation_croc_version }}.tar.gz" + mode: "0644" + when: + - workstation_manage_croc | default(false) + - workstation_croc_version not in (croc_version_check.stdout | default('')) + +- name: Extract croc GitHub release archive + tags: [packages] + ansible.builtin.unarchive: + src: "/tmp/croc_{{ workstation_croc_version }}.tar.gz" + dest: "/tmp/croc_{{ workstation_croc_version }}" + remote_src: true + when: + - workstation_manage_croc | default(false) + - workstation_croc_version not in (croc_version_check.stdout | default('')) + +- name: Install croc binary + tags: [packages] + ansible.builtin.copy: + src: "/tmp/croc_{{ workstation_croc_version }}/croc" + dest: /usr/local/bin/croc + owner: root + group: root + mode: "0755" + remote_src: true + when: + - workstation_manage_croc | default(false) + - workstation_croc_version not in (croc_version_check.stdout | default('')) + +- name: Remove downloaded croc archive + tags: [packages] + ansible.builtin.file: + path: "/tmp/croc_{{ workstation_croc_version }}.tar.gz" + state: absent + when: + - workstation_manage_croc | default(false) + - workstation_croc_version not in (croc_version_check.stdout | default('')) + +- name: Remove temporary croc extraction directory + tags: [packages] + ansible.builtin.file: + path: "/tmp/croc_{{ workstation_croc_version }}" + state: absent + when: + - workstation_manage_croc | default(false) + - workstation_croc_version not in (croc_version_check.stdout | default('')) + - name: Remove workstation snap packages tags: [packages] community.general.snap: