name: 'Setup Enviroment'
description: 'Setup the enviroment for general InvenTree tests'
author: 'inventree'
inputs:
    python:
        required: false
        description: 'Install python.'
        default: 'true'
    npm:
        required: false
        description: 'Install npm.'
        default: 'false'

    install:
        required: false
        description: 'Install the InvenTree requirements?'
        default: 'false'
    dev-install:
        required: false
        description: 'Install the InvenTree development requirements?'
        default: 'false'
    update:
        required: false
        description: 'Should a full update cycle be run?'
        default: 'false'

    apt-dependency:
        required: false
        description: 'Extra APT package for install.'
    pip-dependency:
        required: false
        description: 'Extra python package for install.'

runs:
    using: 'composite'
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2

      # Python installs
      - name: Set up Python ${{ env.python_version }}
        if: ${{ inputs.python == 'true' }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ env.python_version }}
          cache: pip
      - name: Install Base Python Dependencies
        if: ${{ inputs.python == 'true' }}
        shell: bash
        run: |
          python3 -m pip install -U pip
          pip3 install invoke wheel
      - name: Install Specific Python Dependencies
        if: ${{ inputs.pip-dependency }}
        shell: bash
        run: pip3 install ${{ inputs.pip-dependency }}

      # NPM installs
      - name: Install node.js ${{ env.node_version }}
        if: ${{ inputs.npm == 'true' }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ env.node_version }}
          cache: 'npm'
      - name: Intall npm packages
        if: ${{ inputs.npm == 'true' }}
        shell: bash
        run: npm install

      # OS installs
      - name: Install OS Dependencies
        if: ${{ inputs.apt-dependency }}
        shell: bash
        run: |
          sudo apt-get update
          sudo apt-get install ${{ inputs.apt-dependency }}

      # Invoke commands
      - name: Install dev requirements
        if: ${{ inputs.dev-install == 'true' ||inputs.install == 'true' }}
        shell: bash
        run: pip install -r requirements-dev.txt
      - name: Run invoke install
        if: ${{ inputs.install == 'true' }}
        shell: bash
        run: invoke install
      - name: Run invoke update
        if: ${{ inputs.update == 'true' }}
        shell: bash
        run: invoke update
