---
- block:
  - name: Create the openrefine user
    user: name={{ openrefine_user }} home={{ openrefine_user_home }} createhome=no shell=/usr/sbin/nologin system=yes

  - name: Create the openrefine home, if it does not already exist.
    file: dest={{ openrefine_user_home }} owner=root group=root state=directory recurse=yes

  - name: Create the openrefine data and logs directories
    file: dest={{ item }} owner={{ openrefine_user }} group={{ openrefine_user }} state=directory recurse=yes
    with_items:
      - '{{ openrefine_data_dir }}'
      - '{{ openrefine_log_dir }}'

  - name: Download openrefine
    unarchive: remote_src=yes src={{ openrefine_download_url }} dest={{ openrefine_user_home }}
    args:
      creates: '{{ openrefine_user_home }}/{{ openrefine_distribution_prefix }}-{{ openrefine_version }}'

  - name: Install the openrefine configuration
    template: src=refine.ini dest={{ openrefine_user_home }}/{{ openrefine_distribution_prefix }}-{{ openrefine_version }}/refine.ini owner=root group=root mode=0644
    notify: Restart openrefine

  - name: Install the openrefine upstart init script
    template: src=openrefine.conf.j2 dest=/etc/init/openrefine.conf owner=root group=root mode=0644
    when: ansible_service_mgr != 'systemd'

  - name: Ensure that the service is running and enabled
    service: name=openrefine state=started enabled=yes

  when: openrefine_enabled
  tags: [ 'openrefine', 'google_openrefine' ]

- block:

  - name: Ensure that the service is running and enabled
    service: name=openrefine state=stopped enabled=no

  when: not openrefine_enabled
  tags: [ 'openrefine', 'google_openrefine' ]