market-data-source 0.3.0

High-performance synthetic market data generator with financial precision. Generate unlimited OHLC candles, tick data, and realistic trading scenarios for backtesting and research.
Documentation
name: Version Consistency Check

on:
  push:
    paths:
      - 'Cargo.toml'
      - 'pyproject.toml'
      - 'market-data-source-python/Cargo.toml'
  pull_request:
    paths:
      - 'Cargo.toml'
      - 'pyproject.toml'
      - 'market-data-source-python/Cargo.toml'

jobs:
  check-versions:
    name: Verify Version Consistency
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Extract versions
        id: versions
        run: |
          # Extract version from root Cargo.toml
          cargo_version=$(grep "^version" Cargo.toml | head -1 | cut -d'"' -f2)
          echo "cargo_version=$cargo_version" >> $GITHUB_OUTPUT
          
          # Extract version from pyproject.toml
          py_version=$(grep "^version" pyproject.toml | head -1 | cut -d'"' -f2)
          echo "py_version=$py_version" >> $GITHUB_OUTPUT
          
          # Check if workspace member uses workspace version
          workspace_check=$(grep "version.workspace = true" market-data-source-python/Cargo.toml || echo "")
          echo "workspace_check=$workspace_check" >> $GITHUB_OUTPUT
          
          echo "### Version Information" >> $GITHUB_STEP_SUMMARY
          echo "- **Cargo.toml**: $cargo_version" >> $GITHUB_STEP_SUMMARY
          echo "- **pyproject.toml**: $py_version" >> $GITHUB_STEP_SUMMARY
          echo "- **Python crate uses workspace**: $([ -n '$workspace_check' ] && echo 'Yes' || echo 'No')" >> $GITHUB_STEP_SUMMARY
      
      - name: Check version consistency
        run: |
          cargo_version="${{ steps.versions.outputs.cargo_version }}"
          py_version="${{ steps.versions.outputs.py_version }}"
          
          if [ "$cargo_version" != "$py_version" ]; then
            echo "❌ Version mismatch detected!" >> $GITHUB_STEP_SUMMARY
            echo "" >> $GITHUB_STEP_SUMMARY
            echo "**Action Required**: Versions must be synchronized." >> $GITHUB_STEP_SUMMARY
            echo "" >> $GITHUB_STEP_SUMMARY
            echo "Run the following command to fix:" >> $GITHUB_STEP_SUMMARY
            echo '```bash' >> $GITHUB_STEP_SUMMARY
            echo "python scripts/sync-version.py" >> $GITHUB_STEP_SUMMARY
            echo '```' >> $GITHUB_STEP_SUMMARY
            
            echo "::error::Version mismatch: Cargo.toml has $cargo_version but pyproject.toml has $py_version"
            exit 1
          fi
          
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "✅ **Version consistency check passed!**" >> $GITHUB_STEP_SUMMARY
      
      - name: Check version format
        run: |
          version="${{ steps.versions.outputs.cargo_version }}"
          
          # Check if version follows semantic versioning
          if ! echo "$version" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9\.]+)?(\+[a-zA-Z0-9\.]+)?$'; then
            echo "::error::Invalid version format: $version. Must follow semantic versioning (e.g., 1.2.3, 1.2.3-alpha.1)"
            exit 1
          fi
          
          echo "✅ Version format is valid: $version"
      
      - name: Suggest next versions
        if: success()
        run: |
          current="${{ steps.versions.outputs.cargo_version }}"
          
          # Parse version components
          IFS='.' read -r major minor patch <<< "${current%-*}"
          
          # Calculate next versions
          next_major="$((major + 1)).0.0"
          next_minor="${major}.$((minor + 1)).0"
          next_patch="${major}.${minor}.$((patch + 1))"
          
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "### Suggested Next Versions" >> $GITHUB_STEP_SUMMARY
          echo "Current version: **$current**" >> $GITHUB_STEP_SUMMARY
          echo "" >> $GITHUB_STEP_SUMMARY
          echo "- Next patch (bug fixes): `$next_patch`" >> $GITHUB_STEP_SUMMARY
          echo "- Next minor (new features): `$next_minor`" >> $GITHUB_STEP_SUMMARY
          echo "- Next major (breaking changes): `$next_major`" >> $GITHUB_STEP_SUMMARY