system-config/playbooks/roles/gitea-set-org-logos/tasks/main.yaml

46 lines
1.4 KiB
YAML

- name: Get list of orgs
uri:
url: 'https://localhost:3000/api/v1/orgs'
method: GET
return_content: yes
validate_certs: false
status_code: 200
body_format: json
register: _org_list_raw
- name: Filter org list
set_fact:
_org_list: '{{ _org_list_raw.json | map(attribute="username") | list }}'
- name: Copy org logos
copy:
src: '{{ lookup("first_found", _org_logos) }}'
dest: '/var/gitea/data/gitea/avatars/{{ item }}'
owner: 1000
group: 1000
mode: 0644
vars:
_org_logos:
- '{{ item }}.png'
- 'default.png'
loop: '{{ _org_list }}'
register: _logos_updated
- name: Get changed logos
set_fact:
_changed_logos: '{{ _logos_updated.results | selectattr("changed", "equalto", true) | map(attribute="item") | list }}'
# NOTE(ianw) 2022-03-17 There is currently no API to update avatar
# logos with gitea, so we direct update for now.
# * orgs are just entries in the "users" table
# * the "avatar" field is a plain-text name of a file in
# /var/gitea/data/gitea/avatars
- name: Run update query
shell: >-
/usr/local/bin/docker-compose -f /etc/gitea-docker/docker-compose.yaml
exec -T mariadb bash -c 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e
"USE gitea; UPDATE user SET avatar = '\''{{ item }}'\'', use_custom_avatar = 1 WHERE name = '\''{{ item }}'\''"'
args:
executable: '/bin/bash'
loop: '{{ _changed_logos }}'