magefile / mage

a Make/rake-like dev tool using Go
https://magefile.org
Apache License 2.0
4.02k stars 250 forks source link

Nested imports/namespaces? #297

Open ghost opened 4 years ago

ghost commented 4 years ago

I have something like this:

my/repo/mage

.
├── README.md
├── go.mod
├── go.sum
├── magefile.go
└── targets
├── docker
│   └── docker.go
├── kubernetes
│   ├── kubernetes.go
│   └── secrets
│       └── secrets.go
└── precommit
└── precommit.go

magefile.go


import (
// mage:import precommit
_ "github.com/my/repo/mage/targets/precommit"
// mage:import kubernetes
_ "github.com/my/repo/mage/targets/kubernetes"

)


> kubernetes/kubernetes.go
```go
import (
    "fmt"
    // mage:import secrets
    _ "github.com/my/repo/mage/targets/kubernetes/secrets"
)

func Test() error {
    fmt.Println("Kubernetes Test")
    return nil
}

kubernetes/secrets/secrets.go


package secrets

import "fmt"

func Test() error { fmt.Println("Kubernetes Secrets Test") return nil }


Unfortunately, I don't see the target `test` under secrets. I was expecting to see `kubernetes.secrets.test`

Is there another way to do this?

I also tried explicitly putting secrets in an `mg.Namespace`

```go
package secrets

import (
    "fmt"
    "github.com/magefile/mage/mg"
)

type Secrets mg.Namespace

func (Secrets) Test() error {
    fmt.Println("Kubernetes Secrets Test")
    return nil
}

and importing using // mage:import and // mage:import secrets but the nested import never shows up.

ghostsquad commented 4 years ago

Hmm, looks like I missed #152