MCPcopy Index your code
hub / github.com/magefile/mage

github.com/magefile/mage @v1.17.2 sqlite

repository ↗ · DeepWiki ↗ · release v1.17.2 ↗
1,412 symbols 5,496 edges 126 files 180 documented · 13% 15 cross-repo links
README

Built with Mage Build Status Build status

About

Mage is a make-like build tool using Go. You write plain-old go functions, and Mage automatically uses them as Makefile-like runnable targets.

Installation

Mage has no dependencies outside the Go standard library, and builds with Go 1.7 and above (possibly even lower versions, but they're not regularly tested).

Using GOPATH with go version < 1.17

go get -u -d github.com/magefile/mage
cd $GOPATH/src/github.com/magefile/mage
go run bootstrap.go

Using Go Install with go version >= 1.18

go install github.com/magefile/mage@latest
mage -init

Instead of the @latest tag, you can specify the desired version, for example:

go install github.com/magefile/mage@v1.15.0

Using Go Modules

git clone https://github.com/magefile/mage
cd mage
go run bootstrap.go

This will download the code and then run the bootstrap script to build mage with version infomation embedded in it. A normal go get (without -d) or go install will build the binary correctly, but no version info will be embedded. If you've done this, no worries, just go to $GOPATH/src/github.com/magefile/mage and run mage install or go run bootstrap.go and a new binary will be created with the correct version information.

The mage binary will be created in your $GOPATH/bin directory.

You may also install a binary release from our releases page.

Demo

Mage Demo

Discussion

Join the #mage channel on gophers slack or post on the magefile google group for discussion of usage, development, etc.

Documentation

See magefile.org for full documentation.

See pkg.go.dev/github.com/magefile/mage/mage for instructions on how to use Mage as a library.

Why?

Makefiles are hard to read and hard to write. Mostly because makefiles are essentially fancy bash scripts with significant white space and additional make-related syntax.

Mage lets you have multiple magefiles, name your magefiles whatever you want, and they're easy to customize for multiple operating systems. Mage has no dependencies (aside from go) and runs just fine on all major operating systems, whereas make generally uses bash which is not well supported on Windows. Go is superior to bash for any non-trivial task involving branching, looping, anything that's not just straight line execution of commands. And if your project is written in Go, why introduce another language as idiosyncratic as bash? Why not use the language your contributors are already comfortable with?

Thanks

If you use mage and like it, or any of my other software, and you'd like to show your appreciation, you can do so on my patreon:

Extension points exported contracts — how you extend this code

Fn (Interface)
Fn represents a function that can be run with mg.Deps. Package, Name, and ID must combine to uniquely identify a functio [1 …
mg/fn.go

Core symbols most depended-on inside this repo

e
called by 478
site/themes/learn/static/mermaid/mermaid.js
t
called by 377
site/themes/learn/static/mermaid/mermaid.js
String
called by 144
mage/command_string.go
r
called by 143
site/themes/learn/static/mermaid/mermaid.js
i
called by 141
site/themes/learn/static/mermaid/mermaid.js
n
called by 110
site/themes/learn/static/mermaid/mermaid.js
Invoke
called by 102
mage/main.go
a
called by 91
site/themes/learn/static/mermaid/mermaid.js

Shape

Function 1,328
Method 49
TypeAlias 18
Struct 14
Interface 3

Languages

TypeScript61%
Go39%

Modules by API surface

site/themes/learn/static/mermaid/mermaid.js563 symbols
site/themes/learn/static/js/horsey.js113 symbols
site/themes/learn/static/js/jquery-3.5.0.min.js83 symbols
mage/main_test.go76 symbols
parse/parse.go50 symbols
mage/args_test.go32 symbols
site/themes/learn/static/js/modernizr.custom.71422.js26 symbols
mage/main.go23 symbols
mg/fn_test.go22 symbols
site/themes/learn/static/js/highlight.pack.js20 symbols
mage/completion_test.go17 symbols
site/themes/learn/static/js/perfect-scrollbar.min.js16 symbols

For agents

$ claude mcp add mage \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact