178 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
---
 | 
						|
# Packages specific to workstations developing Flutter apps.
 | 
						|
 | 
						|
## Facts ##
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Facts [1/4]
 | 
						|
  set_fact:
 | 
						|
    flutter_url: "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz"
 | 
						|
    flutter_download_file: "{{ user_user.home }}/Downloads/flutter.tar.xz"
 | 
						|
    flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter"
 | 
						|
    flutter_report: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.sdk.flutter.txt"
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Facts [2/4]
 | 
						|
  set_fact:
 | 
						|
    flutter_bin_location: "{{ flutter_sdk_location }}/flutter/bin"
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Facts [3/4]
 | 
						|
  set_fact:
 | 
						|
    flutter: "{{ flutter_bin_location }}/flutter"
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Facts [3/3]
 | 
						|
  set_fact:
 | 
						|
    flutter_report_commands:
 | 
						|
      - "date > {{ flutter_report }}"
 | 
						|
      - "{{ flutter }} --disable-analytics >> {{ flutter_report }}"
 | 
						|
      - "date >> {{ flutter_report }}"
 | 
						|
      - "{{ flutter }} doctor -v >> {{ flutter_report }}"
 | 
						|
      - "date >> {{ flutter_report }}"
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
## Checks ##
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Check SDK Exists
 | 
						|
  stat:
 | 
						|
    path: "{{ flutter_sdk_location }}"
 | 
						|
    get_attributes: false
 | 
						|
    get_checksum: false
 | 
						|
    get_mime: false
 | 
						|
  register: flutter_sdk_stat
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Check Download Exists
 | 
						|
  stat:
 | 
						|
    path: "{{ flutter_download_file }}"
 | 
						|
    get_attributes: false
 | 
						|
    get_checksum: false
 | 
						|
    get_mime: false
 | 
						|
  register: flutter_download_stat
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
## Packages ##
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Necessities
 | 
						|
  package:
 | 
						|
    name:
 | 
						|
    - curl
 | 
						|
    - git
 | 
						|
    - unzip
 | 
						|
    - xz-utils
 | 
						|
    - zip
 | 
						|
    - libglu1-mesa
 | 
						|
    state: present
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
# https://docs.flutter.dev/get-started/install/linux/desktop
 | 
						|
- name: Workstation | Linux | Software | Flutter | Linux App Dependencies
 | 
						|
  package:
 | 
						|
    name:
 | 
						|
    - clang
 | 
						|
    - cmake
 | 
						|
    - git
 | 
						|
    - ninja-build
 | 
						|
    - pkg-config
 | 
						|
    - libgtk-3-dev
 | 
						|
    - liblzma-dev
 | 
						|
    - libstdc++-12-dev
 | 
						|
    state: present
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
# https://docs.flutter.dev/get-started/install/linux/android
 | 
						|
- name: Workstation | Linux | Software | Flutter | Android App Dependencies
 | 
						|
  package:
 | 
						|
    name:
 | 
						|
      - libc6:amd64
 | 
						|
      - libstdc++6
 | 
						|
      - lib32z1
 | 
						|
      - libbz2-1.0
 | 
						|
    state: present
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
## Install SDK ##
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | SDK
 | 
						|
  block:
 | 
						|
 | 
						|
  - name: Workstation | Linux | Software | Flutter | Download SDK
 | 
						|
    get_url:
 | 
						|
      url: "{{ flutter_url }}"
 | 
						|
      dest: "{{ flutter_download_file }}"
 | 
						|
      owner: "{{ user }}"
 | 
						|
      group: "{{ user }}"
 | 
						|
      mode: '0664'
 | 
						|
    when: not flutter_download_stat.stat.exists
 | 
						|
 | 
						|
  - name: Workstation | Linux | Software | Flutter | Create Folder
 | 
						|
    file:
 | 
						|
      path: "{{ flutter_sdk_location }}"
 | 
						|
      state: directory
 | 
						|
      owner: "{{ user }}"
 | 
						|
      group: "{{ user }}"
 | 
						|
      mode: '0755'
 | 
						|
 | 
						|
  - name: Workstation | Linux | Software | Flutter | Extract SDK
 | 
						|
    unarchive:
 | 
						|
      src: "{{ flutter_download_file }}"
 | 
						|
      dest: "{{ flutter_sdk_location }}"
 | 
						|
      owner: "{{ user }}"
 | 
						|
      group: "{{ user }}"
 | 
						|
 | 
						|
  become_user: "{{ user }}"
 | 
						|
  when: coding == true and not flutter_sdk_stat.stat.exists
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Delete Archive
 | 
						|
  file:
 | 
						|
    path: "{{ flutter_download_file }}"
 | 
						|
    state: absent
 | 
						|
 | 
						|
## Configure Environment ##
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Modify PATH (.bashrc)
 | 
						|
  blockinfile:
 | 
						|
    path: "{{ item }}/.bashrc"
 | 
						|
    block: |
 | 
						|
      export PATH="$PATH:{{ flutter_bin_location }}"
 | 
						|
    marker: '# {mark} MANAGED BY ANSIBLE | Flutter'
 | 
						|
    state: present
 | 
						|
    create: yes
 | 
						|
    backup: yes
 | 
						|
  loop:
 | 
						|
    - "{{ user_root.home }}"
 | 
						|
    - "{{ user_user.home }}"
 | 
						|
  ignore_errors: yes
 | 
						|
  when: coding == true and user_root.home != "" and user_user.home != ""
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Modify PATH (.zshrc)
 | 
						|
  blockinfile:
 | 
						|
    path: "{{ item }}/.zshrc"
 | 
						|
    block: |
 | 
						|
      export PATH="$PATH:{{ flutter_bin_location }}"
 | 
						|
    marker: '# {mark} MANAGED BY ANSIBLE | Flutter'
 | 
						|
    state: present
 | 
						|
    create: yes
 | 
						|
    backup: yes
 | 
						|
  loop:
 | 
						|
    - "{{ user_root.home }}"
 | 
						|
    - "{{ user_user.home }}"
 | 
						|
  ignore_errors: yes
 | 
						|
  when: coding == true and user_root.home != "" and user_user.home != ""
 | 
						|
 | 
						|
## Test SDK ##
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Doctor Report
 | 
						|
  shell: "{{ item }}"
 | 
						|
  loop: "{{ flutter_report_commands }}"
 | 
						|
  become_user: "{{ user }}"
 | 
						|
  when: coding == true
 | 
						|
 | 
						|
## Uninstall SDK ##
 | 
						|
 | 
						|
- name: Workstation | Linux | Software | Flutter | Remove SDK
 | 
						|
  file:
 | 
						|
    path: "{{ flutter_sdk_location }}"
 | 
						|
    state: absent
 | 
						|
  when: not coding == true
 |