name: prepare inputs: python-version: description: "Python Version" required: true default: "3.9" poetry-version: description: "Poetry Version" default: "1.7.0" node-version: description: "Node Version" default: "20.x" npm: description: "use npm" default: false type: boolean runs: using: "composite" steps: - name: Set up Python ${{ inputs.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ inputs.python-version }} # cache poetry install via pip cache: "pip" - name: Set up Poetry ${{ inputs.poetry-version }} uses: abatilo/actions-poetry@v2 with: poetry-version: ${{ inputs.poetry-version }} - name: Setup a local virtual environment (if no poetry.toml file) shell: bash run: | poetry config virtualenvs.create true --local poetry config virtualenvs.in-project true --local - uses: actions/cache@v4 name: Define a cache for the virtual environment based on the dependencies lock file with: path: ./.venv key: venv-${{ hashFiles('poetry.lock') }} - name: Install the project dependencies shell: bash run: poetry install - name: Use Node.js ${{ inputs.node-version }} if: ${{ (inputs.npm == 'true') }} uses: actions/setup-node@v4 with: node-version: ${{ inputs.node-version }} - uses: actions/cache@v4 if: ${{ (inputs.npm == 'true') }} name: Define a cache for the npm based on the dependencies lock file with: path: ./node_modules key: npm-${{ hashFiles('package-lock.json') }} - name: Install npm packages if: ${{ (inputs.npm == 'true') }} shell: bash run: npm install