#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

- name: pull in updates on develop branch
  git: repo={{ airavata_repo }}
       dest={{ airavata_source_dir }}
       version={{ git_branch }}
  register: git_pull

- name: check for existing distribution tarball
  find:
      paths: "{{ airavata_source_dir }}/modules/distribution/target"
      patterns: "{{ airavata_dist_name }}"
      file_type: file
  register: dist_tarball_file

- name: build the distribution
  command: mvn clean install -DskipTests
  args:
      chdir: "{{ airavata_source_dir }}"
  when: git_pull.changed or dist_tarball_file.matched == 0
  register: dist_build
