|
@@ -14,7 +14,9 @@
|
|
|
return_content: yes
|
|
|
status_code: 200
|
|
|
register: dl_cc
|
|
|
- when: not (item.direct_download | default(true))
|
|
|
+ when:
|
|
|
+ - item.file_id is defined
|
|
|
+ - not (item.direct_download | default(true))
|
|
|
|
|
|
- name: Store conf code as a fact
|
|
|
set_fact:
|
|
@@ -25,14 +27,21 @@
|
|
|
set_fact:
|
|
|
src_url: "https://drive.google.com/uc?export=download&id={{ item.file_id }}"
|
|
|
when:
|
|
|
+ - item.file_id is defined
|
|
|
- dl_cc.content is not defined
|
|
|
- item.direct_download | default(true)
|
|
|
|
|
|
-- name: Check if the target dir is already there
|
|
|
+- name: Use dict url field as src_url
|
|
|
+ set_fact:
|
|
|
+ src_url: "{{ item.url }}"
|
|
|
+ when:
|
|
|
+ - item.url is defined
|
|
|
+
|
|
|
+- name: Check if the target is already there
|
|
|
ansible.builtin.stat:
|
|
|
- path: "{{ item.target_dir }}"
|
|
|
- register: targetdir
|
|
|
- when: item.target_dir is defined
|
|
|
+ path: "{{ item.target_path }}"
|
|
|
+ register: target_stat
|
|
|
+ when: item.target_path is defined
|
|
|
|
|
|
- name: Download the file
|
|
|
get_url:
|
|
@@ -43,34 +52,36 @@
|
|
|
checksum: "{{ item.checksum | default('') }}"
|
|
|
when:
|
|
|
- (src_url | default(None)) != None
|
|
|
- - item.target_dir is not defined or (targetdir.stat is defined and not targetdir.stat.exists)
|
|
|
+ - item.target_path is not defined or (target_stat.stat is defined and not target_stat.stat.exists)
|
|
|
register: downloaded
|
|
|
|
|
|
+# TODO: fix permissions on target dir (s2i /usr/local/bin)
|
|
|
- name: Extract if so required
|
|
|
become: yes
|
|
|
unarchive:
|
|
|
src: "{{ ansible_facts['user_dir'] }}/Downloads/{{ item.name }}"
|
|
|
remote_src: yes
|
|
|
- creates: "{{ item.extracted_dir }}"
|
|
|
+ creates: "{{ item.extracted_dir | default(item.target_path) }}"
|
|
|
dest: "{{ item.extract_to | default('/') }}"
|
|
|
register: extract_action
|
|
|
when:
|
|
|
- - item.extracted_dir is defined
|
|
|
+ - item.extract_to is defined
|
|
|
- downloaded.changed
|
|
|
|
|
|
- name: Rename wherever the archive extracted to whatever new name is required, if so
|
|
|
become: yes
|
|
|
- command: mv {{ item.extracted_dir }} {{ item.target_dir }}
|
|
|
+ command: mv {{ item.extracted_dir }} {{ item.target_path }}
|
|
|
when:
|
|
|
- - item.target_dir is defined
|
|
|
+ - item.extracted_dir is defined
|
|
|
+ - item.target_path is defined
|
|
|
- extract_action is defined
|
|
|
- extract_action.changed
|
|
|
|
|
|
- name: Make sure bin is in PATH
|
|
|
lineinfile:
|
|
|
path: "{{ ansible_facts['user_dir'] }}/.bashrc"
|
|
|
- line: 'PATH="${PATH}:{{ item.target_dir | default(item.extracted_dir) }}/bin"'
|
|
|
- regexp: '^PATH=.*{{ item.target_dir | default(item.extracted_dir) }}/bin'
|
|
|
+ line: 'PATH="${PATH}:{{ item.target_path | default(item.extracted_dir) }}/bin"'
|
|
|
+ regexp: '^PATH=.*{{ item.target_path | default(item.extracted_dir) }}/bin'
|
|
|
insertafter: "^# User specific environment$"
|
|
|
state: present
|
|
|
when:
|
|
@@ -90,7 +101,7 @@
|
|
|
set_fact:
|
|
|
dl_cc: !!null
|
|
|
src_url: !!null
|
|
|
- targetdir: !!null
|
|
|
+ target_stat: !!null
|
|
|
downloaded: !!null
|
|
|
extract_action: !!null
|
|
|
...
|