# (c) 2014, James Tanner <tanner.jc@gmail.com>

# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.

 - include: 'apt.yml'
   when: ansible_distribution in ('Ubuntu', 'Debian')

 - include: 'apt-multiarch.yml'
   when: ansible_distribution in ('Ubuntu', 'Debian') and ansible_userspace_architecture != apt_foreign_arch

 - include: 'apt-builddep.yml'
   when: ansible_distribution in ('Ubuntu', 'Debian')

 - include: upgrade.yml upgrade_type=dist
   when: ansible_distribution in ('Ubuntu', 'Debian')

 - name: Check if aptitude is installed
   command: dpkg-query --show --showformat='${db:Status-Abbrev}' aptitude
   register: aptitude_status
   when: ansible_distribution in ('Ubuntu', 'Debian')

 - debug: var=aptitude_status.stdout

 - name: Remove aptitude, if installed, to test fall-back to apt-get
   apt:
     pkg: aptitude
     state: absent
   when:
     - aptitude_status.stdout.find('ii') != -1

 - include: "upgrade.yml aptitude_present={{ False | bool }} upgrade_type={{ item.upgrade_type }} force_apt_get={{ item.force_apt_get }}"
   when:
     - ansible_distribution in ('Ubuntu', 'Debian')
   with_items:
     - { upgrade_type: safe, force_apt_get: False }
     - { upgrade_type: full, force_apt_get: False }
     - { upgrade_type: safe, force_apt_get: True }
     - { upgrade_type: full, force_apt_get: True }

 - name: (Re-)Install aptitude, run same tests again
   apt:
     pkg: aptitude
     state: present

 - include: upgrade.yml upgrade_type={{ item.upgrade_type }} force_apt_get={{ item.force_apt_get }}
   when:
     - ansible_distribution in ('Ubuntu', 'Debian')
   with_items:
     - { upgrade_type: safe, force_apt_get: False }
     - { upgrade_type: full, force_apt_get: False }
     - { upgrade_type: safe, force_apt_get: True }
     - { upgrade_type: full, force_apt_get: True }

 - name: Remove aptitude if not originally present
   apt:
     pkg: aptitude
     state: absent
   when:
     - aptitude_status.stdout.find('ii') == -1
