mirror of
https://github.com/magefile/mage.git
synced 2026-10-24 06:19:18 +03:00
* Helpers galore This commit adds helper functions that should be commonly needed by many magefiles. It includes command execution handlers as well as error handlers. This commit also removes the only two non-stdlib dependencies in the codebase. Since mage will likely be vendored into a repo, it would be nice to avoid cluttering the vendor directory with dependencies that are only for the build script.
52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package mg
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
type fatalErr struct {
|
|
code int
|
|
error
|
|
}
|
|
|
|
func (f fatalErr) ExitStatus() int {
|
|
return f.code
|
|
}
|
|
|
|
type exitStatus interface {
|
|
ExitStatus() int
|
|
}
|
|
|
|
// Fatal returns an error that will cause mage to print out the
|
|
// given args and exit with the given exit code.
|
|
func Fatal(code int, args ...interface{}) error {
|
|
return fatalErr{
|
|
code: code,
|
|
error: errors.New(fmt.Sprint(args...)),
|
|
}
|
|
}
|
|
|
|
// Fatalf returns an error that will cause mage to print out the
|
|
// given message and exit with an exit code of 1.
|
|
func Fatalf(code int, format string, args ...interface{}) error {
|
|
return fatalErr{
|
|
code: code,
|
|
error: fmt.Errorf(format, args...),
|
|
}
|
|
}
|
|
|
|
// ExitStatus queries the error for an exit status. If the error is nil, it
|
|
// returns 0. If the error does not implement ExitStatus() int, it returns 1.
|
|
// Otherwise it retiurns the value from ExitStatus().
|
|
func ExitStatus(err error) int {
|
|
if err == nil {
|
|
return 0
|
|
}
|
|
exit, ok := err.(exitStatus)
|
|
if !ok {
|
|
return 1
|
|
}
|
|
return exit.ExitStatus()
|
|
}
|