# 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.

version: '3'

tasks:

  clean:
    silent: true
    desc: clean
    requires: {var: [DIR]}
    cmds:
    - test -d "{{.DIR}}" || die "{{.DIR}} not found or not a directory"
    - rm -Rvf {{.DIR}}/virtualenv {{.DIR}}.zip

  zip:
    silent: true
    desc: environment
    requires: {var: [DIR]}
    cmds:
    - test -d "{{.DIR}}" || die "{{.DIR}} not found or not a directory"
    - |
      if test -f "{{.DIR}}/requirements.txt"
      then bash build-venv.sh "{{.DIR}}" "{{.DIR}}.zip"
      fi
    sources:
    - "{{.DIR}}/requirements.txt"
    generates:
    - "{{.DIR}}/virtualenv/date"

  action:
    silent: true
    desc: compile
    requires: {var: [DIR]}
    dir: "{{.DIR}}"
    cmds:
    - test -d "{{.DIR}}" || die "{{.DIR}} not found or not a directory"
    - 7zz a {{.DIR}}.zip * -tzip -x!virtualenv/* -x!requirements.txt >/dev/null

  cli:
    silent: true
    desc: python cli
    cmds:
    - |
      pip install ipython
      find "$OPS_PWD" -name requirements.txt -execdir pip install -r {} \;
      if test -e "$OPS_PWD/.env"
      then set -a ; source "$OPS_PWD/.env"
      fi
      ipython -i init.ipy

