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 Docker" description = "Exécuter Mago dans n'importe quel environnement sans l'installer localement." nav_order = 60 nav_section = "Recettes" +++

Recette Docker

L'image conteneur officielle est construite à partir de scratch avec un binaire lié statiquement, donc l'image est petite (environ 26 Mo) et n'embarque pas d'OS.

Image

L'image se trouve à ghcr.io/carthage-software/mago sur le GitHub Container Registry.

Tags

Chaque release publie plusieurs tags pour épingler à la précision souhaitée :

Tag Exemple Description
latest ghcr.io/carthage-software/mago:latest Pointe toujours vers la release la plus récente.
<version> ghcr.io/carthage-software/mago:1.30.0 Épinglé à une version exacte.
<major>.<minor> ghcr.io/carthage-software/mago:1.30 Suit le dernier patch d'une version mineure.
<major> ghcr.io/carthage-software/mago:1 Suit la dernière release d'une version majeure.

L'image prend en charge linux/amd64 et linux/arm64. Docker récupère la bonne variante pour votre hôte.

Démarrage rapide

Montez votre répertoire de projet et lancez n'importe quelle commande :

docker run --rm -v $(pwd):/app -w /app ghcr.io/carthage-software/mago lint

Exemples

Lint :

docker run --rm -v $(pwd):/app -w /app ghcr.io/carthage-software/mago lint

Vérifier le formatage sans écrire :

docker run --rm -v $(pwd):/app -w /app ghcr.io/carthage-software/mago fmt --check

Appliquer le formatage :

docker run --rm -v $(pwd):/app -w /app ghcr.io/carthage-software/mago fmt

Lancer une analyse statique :

docker run --rm -v $(pwd):/app -w /app ghcr.io/carthage-software/mago analyze

Afficher la version :

docker run --rm ghcr.io/carthage-software/mago --version

Intégration CI

GitHub Actions

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@v4

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

      - name: Lint
        run: mago lint --reporting-format=github

      - name: Analyze
        run: mago analyze --reporting-format=github

L'image n'inclut pas PHP ni Composer. Cela fonctionne très bien pour le formateur et le linter. L'analyseur a besoin que les dépendances Composer du projet soient installées pour résoudre correctement les symboles ; sans cela, il signalera des faux positifs sur les symboles indéfinis. Si votre projet dépend de paquets tiers et que vous voulez lancer l'analyseur, préférez une installation native avec les dépendances Composer installées.

GitLab CI

GitLab Runner enveloppe chaque ligne de script dans sh -c, ce qui entre en conflit avec l'ENTRYPOINT de cette image. Effacez l'entrypoint pour que vos commandes s'exécutent telles quelles :

mago:
  image:
    name: ghcr.io/carthage-software/mago:1
    entrypoint: [""]
  script:
    - mago fmt --check
    - mago lint
    - mago analyze

Bitbucket Pipelines

pipelines:
  default:
    - step:
        name: Mago Code Quality
        image: ghcr.io/carthage-software/mago:1
        script:
          - mago fmt --check
          - mago lint
          - mago analyze

Alias shell

Traiter l'image comme s'il s'agissait d'un binaire local :

alias mago='docker run --rm -v $(pwd):/app -w /app ghcr.io/carthage-software/mago:1'

Ajoutez la ligne à votre fichier d'init de shell, rechargez le shell, puis lancez mago lint (ou toute autre sous-commande) comme d'habitude.

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