定制 jeffersongoncalves/laravel-zero-self-update 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jeffersongoncalves/laravel-zero-self-update

Composer 安装命令:

composer require jeffersongoncalves/laravel-zero-self-update

包简介

Reusable self-update service and base command for Laravel Zero CLIs distributed as a PHAR via GitHub Releases.

README 文档

README

laravel-zero-self-update

laravel-zero-self-update

Reusable self-update service and base command for Laravel Zero CLIs that are distributed as a single-file PHAR via GitHub Releases.

Most Laravel Zero PHAR tools end up shipping the exact same self-update logic: read the current version, hit the GitHub "latest release" API, compare versions, download the .phar asset, back up the running PHAR and atomically swap it in. This package extracts that logic into one well-tested service (PharUpdater) plus an abstract self-update command base, so each CLI only has to declare its repository, asset name and version.

Installation

composer require jeffersongoncalves/laravel-zero-self-update

Requires PHP ^8.2, guzzlehttp/guzzle ^7.10 and illuminate/console ^11|^12.

Usage

Base command

In your Laravel Zero app, create a command that extends the base and implements the three abstract methods. Override currentVersion() to read your app version from config.

<?php

namespace App\Commands;

use JeffersonGoncalves\LaravelZero\SelfUpdate\SelfUpdateCommand as BaseSelfUpdateCommand;

class SelfUpdateCommand extends BaseSelfUpdateCommand
{
    protected function githubRepo(): string
    {
        return 'jeffersongoncalves/git-worktree-cli';
    }

    protected function assetName(): string
    {
        return 'git-worktree.phar';
    }

    protected function tempPrefix(): string
    {
        return 'git_worktree_';
    }

    protected function currentVersion(): string
    {
        return config('app.version', 'unreleased');
    }
}

That gives you a self-update command:

my-cli self-update          # download and install the latest release
my-cli self-update --check  # only report whether an update is available

Self-update only runs when the app is executed as a PHAR; otherwise it tells the user to update via Git or Composer.

Service directly

You can also use PharUpdater on its own:

use JeffersonGoncalves\LaravelZero\SelfUpdate\PharUpdater;

$updater = new PharUpdater(
    githubRepo: 'jeffersongoncalves/git-worktree-cli',
    assetName: 'git-worktree.phar',
    tempPrefix: 'git_worktree_',
    currentVersion: config('app.version', 'unreleased'),
);

$release = $updater->getLatestRelease(); // ['tag' => 'v1.2.0', 'url' => '...']

if ($updater->isUpdateAvailable($updater->getCurrentVersion(), $release['tag'])) {
    $tempFile = $updater->download($release['url']);
    $updater->replacePhar($tempFile);
}

A custom Guzzle Client can be injected as the last constructor argument (handy for testing or proxies).

Public classes

Class Description
JeffersonGoncalves\LaravelZero\SelfUpdate\PharUpdater Service that talks to GitHub Releases, compares versions, downloads and swaps the PHAR.
JeffersonGoncalves\LaravelZero\SelfUpdate\SelfUpdateCommand Abstract self-update {--check} command wiring the service into a Laravel/Laravel Zero command.

PharUpdater methods

  • getCurrentVersion(): string
  • isRunningAsPhar(): bool
  • getLatestRelease(): array{tag: string, url: string}
  • isUpdateAvailable(string $current, string $latest): bool
  • download(string $url): string
  • replacePhar(string $tempFile): void
  • isValidPhar(string $path): bool

Testing

composer test

License

MIT. See LICENSE.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 4
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固