name: fab:cli-tutorial-login
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  workflow_dispatch:

permissions:
  id-token: write # This is required for requesting the JWT
  contents: read  # This is required for actions/checkout

jobs:
  deploy-demo:
    name: Login Tutorial
    runs-on: ubuntu-latest
  
  steps:
      - name: Check out the code
        uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: "3.12"

      - name: Install Fabric CLI
        run: |
          python -m pip install ms-fabric-cli

      - name: Set environment variables
        env:
          FAB_CLIENT_ID: ${{ secrets.FAB_CLIENT_ID }}
          FAB_TENANT_ID: ${{ secrets.FAB_TENANT_ID }}
        run: |
          echo "Environment variables set."

      - name: Log in to Fabric CLI
        run: |
          fab config set fab_encryption_fallback_enabled true
          FED_TOKEN=$(curl -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=api://AzureADTokenExchange" | jq -r '.value')
          fab auth login -t $FAB_TENANT_ID -u $FAB_CLIENT_ID --federated-token $FED_TOKEN