- block:
  - include_tasks: 01_core.yml
  - set_fact:
      run_once_pkgmgr_install: true
  when: run_once_pkgmgr_install is not defined

- name: update {{ package_name }}
  ansible.builtin.shell: |
    source ~/.venvs/pkgmgr/bin/activate
    pkgmgr update {{ package_name }} --dependencies --clone-mode https
  args:
    executable: /bin/bash
  notify: "{{ package_notify | default(omit,true) }}"
  register: pkgmgr_update_result
  # Mark changed only if it's not "already up to date" and not "no command defined..."
  changed_when: >
    ('already up to date' not in ((pkgmgr_update_result.stdout | default('') | lower)
      ~ ' ' ~ (pkgmgr_update_result.stderr | default('') | lower)))
    and
    ('no command defined' not in ((pkgmgr_update_result.stdout | default('') | lower)
      ~ ' ' ~ (pkgmgr_update_result.stderr | default('') | lower)))

  # Fail only on real errors; allow the "no command defined..." case
  failed_when: >
    (pkgmgr_update_result.rc != 0)
    and
    ('no command defined' not in ((pkgmgr_update_result.stdout | default('') | lower)
      ~ ' ' ~ (pkgmgr_update_result.stderr | default('') | lower)))

