---
# tasks file for ansible-cgit

- name: apt install
  apt:
      name: '{{ item }}'
      state: present
      update_cache: yes
      cache_valid_time: 3600
  with_items:
      - cgit
      - git
      - apache2
      - python-docutils
      - cron

- name: Enable Apache modules
  apache2_module:
      name: '{{ item }}'
      state: present
  notify:
      - Restart Apache
  with_items:
    - cgi
    - ssl

- name: Disable default Apache site
  file:
    path: /etc/apache2/sites-enabled/000-default.conf
    state: absent
  notify:
    - Restart Apache

- name: Add cgit Apache site
  template:
    src: cgit.conf.j2
    dest: /etc/apache2/sites-enabled/cgit.conf
    owner: root
    group: root
    mode: '0644'
  notify:
    - Restart Apache

- name: Create git repostories directory
  file:
      path: '{{ cgit_directory }}'
      owner: root
      group: root
      mode: '0777'
      state: directory

- name: Add symlink for rst2html (hack, fixed in Stretch)
  when: ansible_distribution_major_version < 9
  file:
      src: /usr/share/docutils/scripts/python2/rst2html
      dest: /usr/local/bin/rst2html.py
      owner: root
      group: root
      state: link

- name: Configure cgit
  lineinfile:
      dest: /etc/cgitrc
      line: '{{ item.line }}'
      regexp: '{{ item.regexp|default(omit) }}'
      insertbefore: '{{ item.insertbefore|default(omit) }}'
  with_items:
      - line: 'scan-path={{ cgit_directory }}'
        regexp: 'scan-path='
      - line: 'css=/cgit/css/cgit.css'
        regexp: '^css='
      - line: 'logo=/cgit/css/cgit.png'
        regexp: '^logo='
      - line: 'favicon=/cgit/css/favicon.ico'
        regexp: '^favicon='
      - line: 'about-filter=/usr/lib/cgit/filters/about-formatting.sh'
        regexp: '^about-filter='
        insertbefore: 'scan-path='
      - line: 'enable-git-config=1'
        regexp: '^enable-git-config='
      - line: 'readme=:README.md'
      - line: 'readme=:readme.md'
      - line: 'readme=:README.mkd'
      - line: 'readme=:readme.mkd'
      - line: 'readme=:README.rst'
      - line: 'readme=:readme.rst'
      - line: 'readme=:README.html'
      - line: 'readme=:readme.html'
      - line: 'readme=:README.htm'
      - line: 'readme=:readme.htm'
      - line: 'readme=:README.txt'
      - line: 'readme=:readme.txt'
      - line: 'readme=:README'
      - line: 'readme=:readme'
      - line: 'readme=:INSTALL.md'
      - line: 'readme=:install.md'
      - line: 'readme=:INSTALL.mkd'
      - line: 'readme=:install.mkd'
      - line: 'readme=:INSTALL.rst'
      - line: 'readme=:install.rst'
      - line: 'readme=:INSTALL.html'
      - line: 'readme=:install.html'
      - line: 'readme=:INSTALL.htm'
      - line: 'readme=:install.htm'
      - line: 'readme=:INSTALL.txt'
      - line: 'readme=:install.txt'
      - line: 'readme=:INSTALL'
      - line: 'readme=:install'

- name: Configure firewall
  ufw:
    rule: allow
    port: 443
    proto: tcp

- name: Add daily backup job
  template:
    src: cgit.j2
    dest: /etc/cron.daily/cgit
    owner: root
    group: root
    mode: '0755'
