//go:build mage
-// +build mage
package main
import (
"bytes"
- "errors"
"fmt"
"os"
"path"
if exe := os.Getenv("GOEXE"); exe != "" {
goexe = exe
}
-
- // We want to use Go 1.11 modules even if the source lives inside GOPATH.
- // The default is "auto".
- os.Setenv("GO111MODULE", "on")
}
func runWith(env map[string]string, cmd string, inArgs ...any) error {
return Hugo()
}
-var docker = sh.RunCmd("docker")
-
// Build hugo Docker container
func Docker() error {
+ docker := sh.RunCmd("docker")
+
if err := docker("build", "-t", "hugo", "."); err != nil {
return err
}
fmt.Printf("Skip Test386 on %s and/or %s\n", runtime.GOARCH, runtime.GOOS)
}
- if isCi() && isDarwin() {
+ if isCI() && isDarwin() {
// Skip on macOS in CI (disk space issues)
} else {
mg.Deps(Fmt, Vet)
return nil
}
-var (
- pkgPrefixLen = len("github.com/gohugoio/hugo")
- pkgs []string
- pkgsInit sync.Once
-)
-
-func hugoPackages() ([]string, error) {
- var err error
- pkgsInit.Do(func() {
- var s string
- s, err = sh.Output(goexe, "list", "./...")
- if err != nil {
- return
- }
- pkgs = strings.Split(s, "\n")
- for i := range pkgs {
- pkgs[i] = "." + pkgs[i][pkgPrefixLen:]
- }
- })
- return pkgs, err
-}
+const pkgPrefixLen = len("github.com/gohugoio/hugo")
-// Run golint linter
-func Lint() error {
- pkgs, err := hugoPackages()
+var hugoPackages = sync.OnceValues(func() ([]string, error) {
+ s, err := sh.Output(goexe, "list", "./...")
if err != nil {
- return err
- }
- failed := false
- for _, pkg := range pkgs {
- // We don't actually want to fail this target if we find golint errors,
- // so we don't pass -set_exit_status, but we still print out any failures.
- if _, err := sh.Exec(nil, os.Stderr, nil, "golint", pkg); err != nil {
- fmt.Printf("ERROR: running go lint on %q: %v\n", pkg, err)
- failed = true
- }
+ return nil, err
}
- if failed {
- return errors.New("errors running golint")
+ pkgs := strings.Split(s, "\n")
+ for i := range pkgs {
+ pkgs[i] = "." + pkgs[i][pkgPrefixLen:]
}
- return nil
-}
-
-func isCi() bool {
- return os.Getenv("CI") != ""
-}
-
-func isDarwin() bool {
- return runtime.GOOS == "darwin"
-}
+ return pkgs, nil
+})
// Run go vet linter
func Vet() error {
return err
}
defer f.Close()
- if _, err := f.Write([]byte("mode: count")); err != nil {
+ if _, err := f.WriteString("mode: count"); err != nil {
return err
}
pkgs, err := hugoPackages()
return runtime.GOOS != "windows"
}
+func isDarwin() bool {
+ return runtime.GOOS == "darwin"
+}
+
func isCI() bool {
return os.Getenv("CI") != ""
}