Эх сурвалжийг харах

update statusservices to auto sort by service length

Blaine Story 1 өдөр өмнө
parent
commit
e9bc156486

+ 16 - 8
roles/statusservices/tasks/main.yml

@@ -1,10 +1,18 @@
----
-- name: Combine service lists for bash script
+- name: Sort service list
   set_fact:
-    service_list: "{{ service_list | default('') +'\"' + item  + '\" ' }}"
-  with_items:
-    - "{{ status_services }}"
-    - "{{ status_services_extra }}"
+    service_list: >-
+      {{
+         ((status_services + status_services_extra)|list
+         | map('length') | list)
+         | zip(status_services + status_services_extra|list)
+         | list
+         | sort(attribute=0, reverse=true)
+         | map('last')
+         | list
+      }}
+
+- debug:
+    var: service_list
 
 - name: Install statusservices script
   template:
@@ -14,7 +22,7 @@
     group: root
     mode: '0755'
   when:
-    - service_list is defined
+    - service_list|length > 0
 
 - name: Ensure root .bash_profile.local exists
   ansible.builtin.file:
@@ -32,4 +40,4 @@
     line: '/usr/local/bin/statusservices'
     state: present
   when:
-    - service_list is defined
+    - service_list|length > 0

+ 1 - 1
roles/statusservices/templates/statusservices.j2

@@ -1,7 +1,7 @@
 #!/bin/bash
 # {{ ansible_managed }}
 
-declare -a arr=({{ service_list }})
+declare -a arr=("{%- for item in service_list -%}{{ item }}{%- if not loop.last -%}" "{%- endif -%}{%- endfor -%}")
 
 for i in "${arr[@]}"; do
   istatus=$(systemctl is-active $i)