Good news! The main package path, the containing module, and all of the
dependencies and their versions are already embedded in Go executables. You
can read that info with `go version -m path/to/exe`.

$ go install golang.org/x/tools/cmd/stringer@latest
$ go version -m ~/go/bin/stringer

/Users/jayconrod/go/bin/stringer: go1.17.2

path golang.org/x/tools/cmd/stringer

mod golang.org/x/tools v0.1.7
h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ=

dep golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=

dep golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e
h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=

dep golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=




On Fri, Oct 8, 2021 at 10:05 AM Zigster Programmer <
zigsterprogram...@gmail.com> wrote:

> One of my pet peeves with all executables, not just those created with go,
> is that determining their origin can easily be lost in the mists of time.
>
> This is a problem because I might "go get" some source code and install
> it, then not update it for many years. Then when I have some need to do the
> update, I have completely lost track of where the code came from and I
> might have long ago blown away my ~/go src directory.
>
> Then I have to do a bunch of web searches and run strings/grep on the
> executable in the hope that some URL will be exposed. Most often tho I fail.
>
> For example, consider the 'q' command in
> https://github.com/miekg/exdns/blob/master/q/q.go. 'q' is a fantastic
> utility that I've used for years yet it takes me ages to re-discover the
> origin and do an update because the 'q' executable gives no clue as to
> where it came from. It's also an awful term to use when you make a web
> search.
>
> Sorry for the long-winded prelude.
>
> What I'm leading up to is this, is there a way of automatically importing
> the module name from the go.mod file into all go generated executables such
> that we can automatically discover the origin URL without authors needing
> to write any code?
>
> If not, how do we make it so?
>
> The obvious wrong answer is to use the "embed" package.
>
> It's the wrong answer because embed doesn't allow you to look above the
> current directory, so if you have
> github.com/me/somepackage/cmd/somecommand then somecommand cannot embed
> ../../go.mod
>
> For those of you who have been around Unix for a while, what I effectively
> want to replicate is the "ident" command for go executables. Ideally all
> that such executables need to do is import an "ident" package and they get
> it for free.
>
> I think go is uniquely place because of the existence of go.mod. IOWs, it
> should be a no-brainer to get the module path embedded into the executable,
> but for the life of me I cannot work out how such an "ident" package can do
> that.
>
> So I need help.
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/f6224457-a9b8-4920-a1dd-a4197f94eba1n%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/f6224457-a9b8-4920-a1dd-a4197f94eba1n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAGCADbbz%2BDgPrfG1A9-e-0EfpGs3LKakFD3g_ySOPTCmRsaQQg%40mail.gmail.com.

Reply via email to