This repository has been archived by the owner on Apr 12, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Separate mage from project files (#31)
- Loading branch information
Showing
21 changed files
with
871 additions
and
732 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,6 +30,7 @@ linters: | |
- wrapcheck | ||
- ireturn | ||
- varnamelen | ||
- exhaustruct | ||
|
||
issues: | ||
exclude-rules: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
package entrypoint | ||
|
||
import ( | ||
"errors" | ||
"flag" | ||
"fmt" | ||
"io" | ||
"log" | ||
"os" | ||
|
||
"github.com/magefile/mage/mage" | ||
"github.com/wavesoftware/go-retcode" | ||
) | ||
|
||
var errUnknownCommand = errors.New("unknown command") | ||
|
||
// Directories is a configuration of project directories. | ||
type Directories struct { | ||
BuildDir string | ||
ProjectDir string | ||
CacheDir string | ||
} | ||
|
||
// InvocationOption is a function that can be used to modify mage.Invocation. | ||
type InvocationOption func(mage.Invocation) mage.Invocation | ||
|
||
// Context is a context for the mage execution. | ||
type Context struct { | ||
Directories | ||
Options []InvocationOption | ||
} | ||
|
||
// Execute is the main entry point for the mage command. | ||
// It will change the current working directory to the build directory given | ||
// as Context BuildDir parameter, if given. | ||
func Execute(ctx Context) int { | ||
if ctx.BuildDir != "" { | ||
chdirBuild(ctx.BuildDir) | ||
} | ||
return parseAndRun(os.Stdout, os.Stderr, os.Stdin, os.Args[1:], ctx) | ||
} | ||
|
||
func parseAndRun(stdout, stderr io.Writer, stdin io.Reader, args []string, ctx Context) int { | ||
inv, cmd, err := mage.Parse(stderr, stdout, args) | ||
inv.Stdin = stdin | ||
|
||
if ctx.ProjectDir != "" { | ||
inv.WorkDir = ctx.ProjectDir | ||
} | ||
if ctx.BuildDir != "" { | ||
inv.Dir = ctx.BuildDir | ||
} | ||
if ctx.CacheDir != "" { | ||
inv.CacheDir = ctx.CacheDir | ||
} | ||
for _, opt := range ctx.Options { | ||
inv = opt(inv) | ||
} | ||
return run(inv, cmd, err, stderr) | ||
} | ||
|
||
// TODO: remove this function, when https://github.com/magefile/mage/pull/442 lands. | ||
func run(inv mage.Invocation, cmd mage.Command, err error, stderr io.Writer) int { | ||
if errors.Is(err, flag.ErrHelp) { | ||
return 0 | ||
} | ||
errlog := log.New(inv.Stderr, "", 0) | ||
if err != nil { | ||
errlog.Println("Error:", err) | ||
return retcode.Calc(err) | ||
} | ||
inv.Stderr = stderr | ||
|
||
switch cmd { | ||
case mage.Version, mage.Init, mage.Clean: | ||
return mage.ParseAndRun(inv.Stdout, inv.Stderr, inv.Stdin, inv.Args) | ||
case mage.CompileStatic: | ||
return mage.Invoke(inv) | ||
case mage.None: | ||
return mage.Invoke(inv) | ||
default: | ||
panic(fmt.Errorf("%w type: %v", errUnknownCommand, cmd)) | ||
} | ||
} | ||
|
||
func chdirBuild(builddir string) { | ||
if err := os.Chdir(builddir); err != nil { | ||
panic(err) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,141 +1,131 @@ | ||
module github.com/wavesoftware/go-magetasks | ||
|
||
go 1.17 | ||
go 1.18 | ||
|
||
require ( | ||
github.com/blang/semver/v4 v4.0.0 | ||
github.com/fatih/color v1.13.0 | ||
github.com/google/go-containerregistry v0.8.1-0.20220209165246-a44adc326839 | ||
github.com/google/ko v0.10.0 | ||
github.com/google/go-containerregistry v0.11.0 | ||
github.com/google/ko v0.12.0 | ||
github.com/hashicorp/go-multierror v1.1.1 | ||
github.com/joho/godotenv v1.4.0 | ||
github.com/magefile/mage v1.12.1 | ||
github.com/magefile/mage v1.14.0 | ||
github.com/wavesoftware/go-ensure v1.0.0 | ||
golang.org/x/mod v0.5.1 | ||
gotest.tools/v3 v3.1.0 | ||
github.com/wavesoftware/go-retcode v1.0.0 | ||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 | ||
gotest.tools/v3 v3.4.0 | ||
) | ||
|
||
require ( | ||
cloud.google.com/go v0.100.2 // indirect | ||
cloud.google.com/go/compute v1.3.0 // indirect | ||
cloud.google.com/go/iam v0.2.0 // indirect | ||
cloud.google.com/go/storage v1.21.0 // indirect | ||
github.com/Azure/azure-sdk-for-go v61.5.0+incompatible // indirect | ||
cloud.google.com/go/compute v1.7.0 // indirect | ||
github.com/Azure/azure-sdk-for-go v66.0.0+incompatible // indirect | ||
github.com/Azure/go-autorest v14.2.0+incompatible // indirect | ||
github.com/Azure/go-autorest/autorest v0.11.24 // indirect | ||
github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect | ||
github.com/Azure/go-autorest/autorest v0.11.28 // indirect | ||
github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect | ||
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect | ||
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 // indirect | ||
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect | ||
github.com/Azure/go-autorest/logger v0.2.1 // indirect | ||
github.com/Azure/go-autorest/tracing v0.6.0 // indirect | ||
github.com/BurntSushi/toml v1.0.0 // indirect | ||
github.com/BurntSushi/toml v1.1.0 // indirect | ||
github.com/Microsoft/go-winio v0.5.2 // indirect | ||
github.com/PuerkitoBio/purell v1.1.1 // indirect | ||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect | ||
github.com/alessio/shellescape v1.4.1 // indirect | ||
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect | ||
github.com/aws/aws-sdk-go-v2 v1.13.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/config v1.13.1 // indirect | ||
github.com/aws/aws-sdk-go-v2/credentials v1.8.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.10.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.4 // indirect | ||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.2.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.5 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/ecr v1.14.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.11.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.7.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/sso v1.9.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/sts v1.14.0 // indirect | ||
github.com/aws/smithy-go v1.10.0 // indirect | ||
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220216180153-3d7835abdf40 // indirect | ||
github.com/chrismellard/docker-credential-acr-env v0.0.0-20220119192733-fe33c00cee21 // indirect | ||
github.com/containerd/containerd v1.6.0 // indirect | ||
github.com/containerd/stargz-snapshotter/estargz v0.11.0 // indirect | ||
github.com/aws/aws-sdk-go-v2 v1.16.11 // indirect | ||
github.com/aws/aws-sdk-go-v2/config v1.17.0 // indirect | ||
github.com/aws/aws-sdk-go-v2/credentials v1.12.13 // indirect | ||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.12 // indirect | ||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18 // indirect | ||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.12 // indirect | ||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.19 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/ecr v1.17.5 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.5 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.12 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/sso v1.11.16 // indirect | ||
github.com/aws/aws-sdk-go-v2/service/sts v1.16.13 // indirect | ||
github.com/aws/smithy-go v1.12.1 // indirect | ||
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220517224237-e6f29200ae04 // indirect | ||
github.com/chrismellard/docker-credential-acr-env v0.0.0-20220327082430-c57b701bfc08 // indirect | ||
github.com/containerd/stargz-snapshotter/estargz v0.12.0 // indirect | ||
github.com/dimchansky/utfbom v1.1.1 // indirect | ||
github.com/docker/cli v20.10.12+incompatible // indirect | ||
github.com/docker/distribution v2.8.0+incompatible // indirect | ||
github.com/docker/docker v20.10.12+incompatible // indirect | ||
github.com/docker/cli v20.10.17+incompatible // indirect | ||
github.com/docker/distribution v2.8.1+incompatible // indirect | ||
github.com/docker/docker v20.10.17+incompatible // indirect | ||
github.com/docker/docker-credential-helpers v0.6.4 // indirect | ||
github.com/docker/go-connections v0.4.0 // indirect | ||
github.com/docker/go-units v0.4.0 // indirect | ||
github.com/dprotaso/go-yit v0.0.0-20191028211022-135eb7262960 // indirect | ||
github.com/dprotaso/go-yit v0.0.0-20220510233725-9ba8df137936 // indirect | ||
github.com/evanphx/json-patch/v5 v5.6.0 // indirect | ||
github.com/fsnotify/fsnotify v1.5.1 // indirect | ||
github.com/go-logr/logr v1.2.2 // indirect | ||
github.com/go-openapi/analysis v0.21.2 // indirect | ||
github.com/fsnotify/fsnotify v1.5.4 // indirect | ||
github.com/go-logr/logr v1.2.3 // indirect | ||
github.com/go-openapi/analysis v0.21.3 // indirect | ||
github.com/go-openapi/errors v0.20.2 // indirect | ||
github.com/go-openapi/jsonpointer v0.19.5 // indirect | ||
github.com/go-openapi/jsonreference v0.19.6 // indirect | ||
github.com/go-openapi/jsonreference v0.20.0 // indirect | ||
github.com/go-openapi/loads v0.21.1 // indirect | ||
github.com/go-openapi/runtime v0.23.0 // indirect | ||
github.com/go-openapi/spec v0.20.4 // indirect | ||
github.com/go-openapi/strfmt v0.21.2 // indirect | ||
github.com/go-openapi/swag v0.21.1 // indirect | ||
github.com/go-openapi/validate v0.20.3 // indirect | ||
github.com/go-stack/stack v1.8.1 // indirect | ||
github.com/go-openapi/runtime v0.24.1 // indirect | ||
github.com/go-openapi/spec v0.20.6 // indirect | ||
github.com/go-openapi/strfmt v0.21.3 // indirect | ||
github.com/go-openapi/swag v0.22.1 // indirect | ||
github.com/go-openapi/validate v0.22.0 // indirect | ||
github.com/gogo/protobuf v1.3.2 // indirect | ||
github.com/golang-jwt/jwt/v4 v4.3.0 // indirect | ||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | ||
github.com/golang-jwt/jwt/v4 v4.4.2 // indirect | ||
github.com/golang/protobuf v1.5.2 // indirect | ||
github.com/golang/snappy v0.0.4 // indirect | ||
github.com/google/go-cmp v0.5.7 // indirect | ||
github.com/googleapis/gax-go/v2 v2.1.1 // indirect | ||
github.com/google/go-cmp v0.5.8 // indirect | ||
github.com/hashicorp/errwrap v1.1.0 // indirect | ||
github.com/hashicorp/hcl v1.0.0 // indirect | ||
github.com/inconshreveable/mousetrap v1.0.0 // indirect | ||
github.com/jmespath/go-jmespath v0.4.0 // indirect | ||
github.com/josharian/intern v1.0.0 // indirect | ||
github.com/klauspost/compress v1.14.3 // indirect | ||
github.com/magiconair/properties v1.8.5 // indirect | ||
github.com/klauspost/compress v1.15.8 // indirect | ||
github.com/letsencrypt/boulder v0.0.0-20220723181115-27de4befb95e // indirect | ||
github.com/magiconair/properties v1.8.6 // indirect | ||
github.com/mailru/easyjson v0.7.7 // indirect | ||
github.com/mattmoor/dep-notify v0.0.0-20190205035814-a45dec370a17 // indirect | ||
github.com/mattn/go-colorable v0.1.12 // indirect | ||
github.com/mattn/go-isatty v0.0.14 // indirect | ||
github.com/mitchellh/go-homedir v1.1.0 // indirect | ||
github.com/mitchellh/mapstructure v1.4.3 // indirect | ||
github.com/mitchellh/mapstructure v1.5.0 // indirect | ||
github.com/oklog/ulid v1.3.1 // indirect | ||
github.com/opencontainers/go-digest v1.0.0 // indirect | ||
github.com/opencontainers/image-spec v1.0.3-0.20220114050600-8b9d41f48198 // indirect | ||
github.com/pelletier/go-toml v1.9.4 // indirect | ||
github.com/pelletier/go-toml v1.9.5 // indirect | ||
github.com/pelletier/go-toml/v2 v2.0.1 // indirect | ||
github.com/pkg/errors v0.9.1 // indirect | ||
github.com/secure-systems-lab/go-securesystemslib v0.3.0 // indirect | ||
github.com/sigstore/cosign v1.5.1 // indirect | ||
github.com/sigstore/rekor v0.5.0 // indirect | ||
github.com/sigstore/sigstore v1.1.1-0.20220130134424-bae9b66b8442 // indirect | ||
github.com/sirupsen/logrus v1.8.1 // indirect | ||
github.com/spf13/afero v1.8.1 // indirect | ||
github.com/spf13/cast v1.4.1 // indirect | ||
github.com/spf13/cobra v1.3.0 // indirect | ||
github.com/sigstore/cosign v1.11.0 // indirect | ||
github.com/sigstore/rekor v0.10.0 // indirect | ||
github.com/sigstore/sigstore v1.4.0 // indirect | ||
github.com/sirupsen/logrus v1.9.0 // indirect | ||
github.com/spf13/afero v1.8.2 // indirect | ||
github.com/spf13/cast v1.5.0 // indirect | ||
github.com/spf13/cobra v1.5.0 // indirect | ||
github.com/spf13/jwalterweatherman v1.1.0 // indirect | ||
github.com/spf13/pflag v1.0.5 // indirect | ||
github.com/spf13/viper v1.10.1 // indirect | ||
github.com/subosito/gotenv v1.2.0 // indirect | ||
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect | ||
github.com/theupdateframework/go-tuf v0.0.0-20220211205608-f0c3294f63b9 // indirect | ||
github.com/spf13/viper v1.12.0 // indirect | ||
github.com/subosito/gotenv v1.3.0 // indirect | ||
github.com/theupdateframework/go-tuf v0.3.1 // indirect | ||
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect | ||
github.com/vbatts/tar-split v0.11.2 // indirect | ||
go.mongodb.org/mongo-driver v1.8.3 // indirect | ||
go.opencensus.io v0.23.0 // indirect | ||
golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect | ||
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect | ||
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect | ||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect | ||
golang.org/x/sys v0.0.0-20220209214540-3681064d5158 // indirect | ||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect | ||
go.mongodb.org/mongo-driver v1.10.0 // indirect | ||
go.uber.org/automaxprocs v1.5.1 // indirect | ||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect | ||
golang.org/x/net v0.0.0-20220805013720-a33c5aa5df48 // indirect | ||
golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c // indirect | ||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect | ||
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect | ||
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect | ||
golang.org/x/text v0.3.7 // indirect | ||
golang.org/x/tools v0.1.9 // indirect | ||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect | ||
google.golang.org/api v0.69.0 // indirect | ||
golang.org/x/tools v0.1.12 // indirect | ||
google.golang.org/appengine v1.6.7 // indirect | ||
google.golang.org/genproto v0.0.0-20220217155828-d576998c0009 // indirect | ||
google.golang.org/grpc v1.44.0 // indirect | ||
google.golang.org/protobuf v1.27.1 // indirect | ||
gopkg.in/ini.v1 v1.66.4 // indirect | ||
google.golang.org/genproto v0.0.0-20220720214146-176da50484ac // indirect | ||
google.golang.org/grpc v1.48.0 // indirect | ||
google.golang.org/protobuf v1.28.1 // indirect | ||
gopkg.in/ini.v1 v1.66.6 // indirect | ||
gopkg.in/square/go-jose.v2 v2.6.0 // indirect | ||
gopkg.in/yaml.v2 v2.4.0 // indirect | ||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect | ||
k8s.io/apimachinery v0.23.4 // indirect | ||
k8s.io/klog/v2 v2.40.1 // indirect | ||
gopkg.in/yaml.v3 v3.0.1 // indirect | ||
k8s.io/apimachinery v0.24.4 // indirect | ||
k8s.io/klog/v2 v2.60.1 // indirect | ||
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect | ||
sigs.k8s.io/kind v0.11.1 // indirect | ||
sigs.k8s.io/kind v0.14.0 // indirect | ||
sigs.k8s.io/yaml v1.3.0 // indirect | ||
) |
Oops, something went wrong.