Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Version Checker Laravel Package

roadrunner-php/version-checker

Lightweight RoadRunner + PHP version compatibility checker. Detects your installed PHP version and validates it against the RoadRunner runtime requirements, helping prevent mismatched upgrades and deployment issues in CI/CD or local environments.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation:

    composer require roadrunner-php/version-checker
    

    Add to composer.json under require-dev if only needed for local checks:

    "require-dev": {
        "roadrunner-php/version-checker": "^1.0"
    }
    
  2. Basic Usage:

    use RoadRunner\VersionChecker\VersionChecker;
    
    $checker = new VersionChecker();
    $latestVersion = $checker->getLatestVersion(); // Returns string (e.g., "v1.0.0")
    $isLatest = $checker->isLatest(); // Compares with your installed version
    
  3. First Use Case:

    • CI/CD Pipeline: Check RoadRunner version before deployment to avoid compatibility issues.
    • Local Development: Add a script to warn if an outdated version is detected:
      if (!$checker->isLatest()) {
          echo "⚠️ Outdated RoadRunner version detected! Latest: {$checker->getLatestVersion()}";
      }
      

Implementation Patterns

Workflow Integration

  1. Automated Version Checks in Laravel:

    • Use in bootstrap/app.php or a service provider to log warnings:
      public function boot()
      {
          $checker = new VersionChecker();
          if (!$checker->isLatest()) {
              Log::warning("RoadRunner version outdated. Latest: {$checker->getLatestVersion()}");
          }
      }
      
  2. Custom Version Comparison:

    • Override default comparison logic (e.g., ignore patch versions):
      $checker = new VersionChecker();
      $checker->setVersionComparator(function ($installed, $latest) {
          return version_compare($installed, $latest, '>=');
      });
      
  3. Scheduled Checks:

    • Run via Laravel’s scheduler (e.g., daily):
      $schedule->command(function () {
          $checker = new VersionChecker();
          if (!$checker->isLatest()) {
              // Send Slack/email notification
          }
      })->daily();
      

Integration Tips

  • RoadRunner CLI: Combine with rr get-version for cross-verification.
  • Laravel Artisan: Create a custom command:
    php artisan rr:check-version
    
    // In a command class
    protected function handle()
    {
        $checker = new VersionChecker();
        $this->info("Latest RoadRunner version: {$checker->getLatestVersion()}");
        $this->warn(!$checker->isLatest() ? 'Update recommended!' : 'Up to date!');
    }
    

Gotchas and Tips

Pitfalls

  1. Network Dependencies:

    • getLatestVersion() requires internet access. Handle failures gracefully:
      try {
          $latest = $checker->getLatestVersion();
      } catch (\Exception $e) {
          $this->warn("Could not check version: " . $e->getMessage());
      }
      
  2. Version Format Assumptions:

    • Assumes semantic versioning (e.g., v1.2.3). Custom formats may break comparisons.
  3. Caching:

    • No built-in caching. Cache results manually (e.g., Redis) to avoid repeated API calls:
      $latest = Cache::remember('rr_latest_version', now()->addHours(1), function () {
          return $checker->getLatestVersion();
      });
      

Debugging

  • Silent Failures: Enable debug mode to log API issues:
    $checker->setDebug(true);
    
  • Mocking for Tests: Use a mock HTTP client to simulate API failures:
    $checker->setHttpClient(new MockHttpClient());
    

Extension Points

  1. Custom Version Sources:

    • Override the default GitHub API endpoint:
      $checker->setVersionSource('https://custom-api.com/latest-rr-version');
      
  2. Event-Based Notifications:

    • Dispatch events when outdated:
      if (!$checker->isLatest()) {
          event(new RoadRunnerOutdated($checker->getLatestVersion()));
      }
      
  3. Batch Checking:

    • Extend to check multiple packages (e.g., RoadRunner + dependencies):
      $checker->addPackage('spatie/laravel-activitylog', 'v3.0.0');
      $checker->checkAll();
      
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor