name: uv-publish-nightly
on:
  schedule:
    - cron: '35 10 * * *' # 10:35am UTC, 2:35am PST, 5:35am EST
  release:
    types: [published]
  workflow_dispatch:

jobs:
  # nightly release check from https://stackoverflow.com/a/67527144
  check-date:
    runs-on: ubuntu-latest
    outputs:
      should_run: ${{ steps.should_run.outputs.should_run }}
    steps:
      - uses: actions/checkout@v4
      - name: print latest_commit
        run: echo ${{ github.sha }}
      - id: should_run
        continue-on-error: true
        name: check latest commit is less than a day
        if: ${{ github.event_name == 'schedule' }}
        run: test -z $(git rev-list  --after="24 hours"  ${{ github.sha }}) && echo "::set-output name=should_run::false"

  build-and-publish-nightly:
    name: Build and Publish to PyPI (nightly)
    if: github.repository == 'letta-ai/letta'  # TODO: if the repo org ever changes, this must be updated
    runs-on: ubuntu-latest
    needs: check-date
    steps:
      - name: Check out the repository
        uses: actions/checkout@v4

      - name: Set up python 3.12
        id: setup-python
        uses: actions/setup-python@v5
        with:
          python-version: 3.12

      - name: Install uv
        run: |
          curl -LsSf https://astral.sh/uv/install.sh | sh
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH

      - name: Set release version
        run: |
          # Extract the version number from pyproject.toml using awk
          CURRENT_VERSION=$(awk -F '"' '/version =/ { print $2 }' pyproject.toml | head -n 1)
          # Export the CURRENT_VERSION with the .dev and current date suffix
          NIGHTLY_VERSION="${CURRENT_VERSION}.dev$(date +%Y%m%d%H%M%S)"
          # Overwrite pyproject.toml with nightly config
          sed -i "0,/version = \"${CURRENT_VERSION}\"/s//version = \"${NIGHTLY_VERSION}\"/" pyproject.toml
          sed -i 's/name = "letta"/name = "letta-nightly"/g' pyproject.toml
          sed -i "s/__version__ = '.*'/__version__ = '${NIGHTLY_VERSION}'/g" letta/__init__.py
          cat pyproject.toml
          cat letta/__init__.py

      - name: Build the Python package
        run: uv build

      - name: Publish the package to PyPI
        env:
          UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
        run: uv publish
