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

Mago Laravel Package

carthage-software/mago

Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It helps teams catch issues early, enforce consistent style, and improve code quality across projects, with multiple install options like script, Homebrew, Composer, and Cargo.

View on GitHub
Deep Wiki
Context7

+++ title = "Recette GitHub Actions" description = "Lancer le formatage, le linting et l'analyse à chaque push et chaque pull request." nav_order = 50 nav_section = "Recettes" +++

Recette GitHub Actions

Un workflow simple qui lance le formateur, le linter et l'analyseur à chaque push et chaque pull request, avec des annotations natives sur les PR.

Configuration rapide

Créez .github/workflows/mago.yml :

name: Mago Code Quality

on:
  push:
  pull_request:

jobs:
  mago:
    name: Run Mago Checks
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Set up Mago
        uses: nhedger/setup-mago@v2

      - name: Check formatting
        run: mago format --check

      - name: Lint
        if: success() || failure()
        run: mago lint

      - name: Analyze
        if: success() || failure()
        run: mago analyze

Quelques notes sur la structure :

  • Séparer format, lint et analyze en étapes distinctes fait remonter les résultats des trois, même quand une étape antérieure échoue. Un seul run: combiné ferait court-circuit au premier échec et masquerait le reste.
  • if: success() || failure() lance l'étape quand le job n'a pas été annulé, ce qui est ce que vous voulez ici. always() la lancerait aussi après des échecs de setup.
  • Utilisez mago format --check, pas --dry-run. --check quitte avec un code non nul quand des fichiers ont besoin d'être formatés ; --dry-run n'affiche qu'un diff et quitte toujours zéro.
  • Mago détecte GitHub Actions via la variable d'environnement GITHUB_ACTIONS et bascule automatiquement sur --reporting-format=github, produisant des annotations natives sur les PR. Aucune configuration supplémentaire requise. Sur 1.17.0 et antérieur, vous devez passer --reporting-format=github à mago lint et mago analyze manuellement.

Utiliser l'image Docker

Si vous préférez ne pas installer Mago sur le runner, lancez l'image Docker officielle en tant que job conteneur :

name: Mago Code Quality

on:
  push:
  pull_request:

jobs:
  mago:
    name: Run Mago Checks
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/carthage-software/mago:1
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Check formatting
        run: mago fmt --check

      - name: Lint
        if: success() || failure()
        run: mago lint

      - name: Analyze
        if: success() || failure()
        run: mago analyze

L'image n'inclut pas PHP ni Composer. Cela fonctionne très bien pour le formateur et le linter, mais l'analyseur a besoin des dépendances Composer pour résoudre les symboles. Pour l'analyse, préférez l'approche setup-mago avec composer install exécuté en premier.

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.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle