---
- name: zsh install packages
  become: '{{package_become}}'
  package:
    name: zsh
    state: present

- name: zsh install Debian packages
  when: ansible_os_family == "Debian"
  become: true
  apt:
    name:
      - pinentry-curses
      - silversearcher-ag
      - unzip
      - zsh-doc
    state: present

- name: zsh install macOS packages
  when: ansible_os_family == "Darwin"
  become: false
  homebrew:
    name: the_silver_searcher
    state: present

- name: zsh clone plugin repos
  git:
    repo: '{{item.repo}}'
    dest: '{{item.dest}}'
  with_items:
    - repo: https://github.com/zsh-users/zsh-autosuggestions.git
      dest: ~/.config/zsh/zsh-autosuggestions
    - repo: https://github.com/zsh-users/zsh-history-substring-search.git
      dest: ~/.config/zsh/zsh-history-substring-search
    - repo: https://github.com/zsh-users/zsh-syntax-highlighting.git
      dest: ~/.config/zsh/zsh-syntax-highlighting
    - repo: https://github.com/zsh-users/zsh-completions.git
      dest: ~/.config/zsh/zsh-completions
    - repo: https://github.com/junegunn/fzf.git
      dest: ~/.config/zsh/fzf

- name: zsh install fzf binaries
  command:
    cmd: ~/.config/zsh/fzf/install --bin
    creates: ~/.config/zsh/fzf/bin/fzf

- name: zsh create directories
  file:
    state: directory
    dest: '{{item}}'
  with_items:
    - ~/.local/bin
    - ~/.local/share/zsh/site-functions

- name: zsh create symbolic links
  file:
    state: link
    src: '{{item.src}}'
    dest: '{{item.dest}}'
  with_items:
    - src: ~/.config/zsh/zlogin
      dest: ~/.zlogin
    - src: ~/.config/zsh/zlogout
      dest: ~/.zlogout
    - src: ~/.config/zsh/zprofile
      dest: ~/.zprofile
    - src: ~/.config/zsh/zshenv
      dest: ~/.zshenv
    - src: ~/.config/zsh/zshrc
      dest: ~/.zshrc
    - src: ~/.config/zsh/prompt_fresh_setup
      dest: ~/.local/share/zsh/site-functions/prompt_fresh_setup
    - src: ~/.config/zsh/build/_build-dir
      dest: ~/.local/share/zsh/site-functions/_build-dir
    - src: ~/.config/zsh/sandbox/_sandbox
      dest: ~/.local/share/zsh/site-functions/_sandbox
    - src: ~/.config/zsh/layout/_layout
      dest: ~/.local/share/zsh/site-functions/_layout
    - src: ~/.config/zsh/notes/_note
      dest: ~/.local/share/zsh/site-functions/_note
    - src: ~/.config/zsh/fzf/bin/fzf
      dest: ~/.local/bin/fzf
    - src: ~/.config/zsh/fzf/bin/fzf-tmux
      dest: ~/.local/bin/fzf-tmux
    - src: ~/.config/zsh/cmake-uninstall
      dest: ~/.local/bin/cmake-uninstall
    - src: ~/.config/zsh/$
      dest: ~/.local/bin/$

- name: zsh get absolute path
  shell: command -v zsh
  register: zsh
  changed_when: false

- name: zsh set default shell
  user:
    name: '{{lookup("env", "USER")}}'
    shell: '{{zsh.stdout}}'
  become: true