-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
x/tools/cmd/godoc, gddo: module support #26827
Comments
Indeed. Thank you. |
@gopherbot please add modules label |
I don't think this is a modules issue. It is about changes in godoc due to modules. |
I have been directed here from the #modules channel on the Gophers slack. Hopefully this is the right place to give a report. I'm writing a new package using modules, outside GOPATH. I have not pushed this package anywhere public just yet. I'd like to know how the HTML documentation renders before I do. I am writing examples and adding code blocks to godoc comments as well, so doing So far, I've written a little shell script that copies the entire tree to GOPATH so that godoc can pick it up. As I iterate, I run the shell script. This doesn't feel quite right. I have also tried using symlinks, which godoc (rightfully) ignores.
That would certainly be nice. I would like to be able to point godoc at some directory outside GOPATH, where I am currently working. |
[moved from https://github.com//issues/28720] A suggestion: the godoc.org page for a package containing the go.mod file should also show an import/replace path specified in the go.mod file. For example, this package https://godoc.org/github.com/go101/tinyrouter specified its import path in go.mod as go101.org/tinyrouter instead of its hosing path. The the doc page should also list the import path which is specified in It would be better if the doc page can suggest a An example for the TinyRouter doc page: ==== package tinyrouterimport "github.com/go101/tinyrouter" // for GOPATH based projects import "go101.org/tinyrouter" // for modules based projects Please add the following line in your go.mod file to use this package replace go101.org/tinyrouter => github.com/go101/tinyrouter v1.0.1 |
+1 for @go101 |
If godoc could support doing previews for an individual package (in the context of a directory rather than through package discovery) I think that might help a lot of use cases in the near term. Even if this were a temporary feature I think it'd go a long way. If godoc can already do this I'd love to hear about it. |
Workaround from thread (similar to
|
Reopening. (Sorry, fat fingered on my phone). |
Yeah, this is more or less what I've been doing. Instead of dumping it in |
No go with symlinks, but |
We are working on a workaround with Docker - mounting our code in as a volume and running |
There is planning work being done with the goal of making that the case. I will be posting more updates in the coming weeks. Thanks for your patience on this. |
Thanks for sharing your solution! Unfortunately, it didn’t work for me in zsh as-is, so I’ve taken the liberty to rewrite it in a way that works and that I find more clear. I tested this in bash and zsh: function godoc() {
if [ ! -f go.mod ]
then
echo "error: go.mod not found" >&2
return
fi
module=$(sed -n 's/^module \(.*\)/\1/p' go.mod)
docker run \
--rm \
-e "GOPATH=/tmp/go" \
-p 127.0.0.1:6060:6060 \
-v $PWD:/tmp/go/src/$module \
golang \
bash -c "go get golang.org/x/tools/cmd/godoc && echo http://localhost:7070/pkg/$module && /tmp/go/bin/godoc -http=:6060"
} |
This issue is the umbrella issue for all “godoc”-like projects that need to support modules. It’s not easy to discuss progress on individual projects here. We have created smaller tracking issues for the individual projects: #33654 - discovery: Go discovery site tracking issue |
@stapelberg in newer Go images, at least :1.13 and :latest, godoc isn't installed by default. Thus, the bash command should start first with Thank you very for this useful script! |
Thanks, I updated my earlier comment to work with Go 1.13. |
Here's a generalized version of @stapelberg's code -- this one serves all of the packages in your dev tree regardless of whether they have a go.mod yet or not. Modify $devbase (or pass it in as $1) to point at the base of your tree:
|
@stevegt Thanks so much for your script. To make things even more dead simple I replaced |
For those who are following this issue because you are waiting for module support in the I've also sent a mail to golang-nuts to announce this. |
@dmitshur I faced another issue. In my organization, we host on Gitlab and projects are namespaced with their "groups". My module and VCS name is When I run
This results in a broken UI and thus my packages aren't listed correctly. The workaround is to remove go.mod module git.$org.com/internal/golang-dynaday
go 1.14
replace git.$org.com/internal/golang-dynaday/submodule => ./submodule
require (
git.$org.com/internal/golang-dynaday/submodule v0.0.0-00010101000000-000000000000
) |
@StarpTech Thanks for reporting. Do you mind opening a new issue with a "x/tools/cmd/godoc: " prefix? That will make it easier to track that specific problem. I have a guess about what the problem may be. I have a WIP CL 205661 which I suspect may resolve the issue. If you can make a smaller reproduce case, that would be very helpful to confirm whether or not it it'll solve your problem. (Alternatively, you can try that CL yourself and let me know.) |
The gddo codebase is frozen, and godoc.org redirects to pkg.go.dev since early 2021 (see https://go.dev/blog/godoc.org-redirect). I think this umbrella tracking issue can be closed now. |
I wanted to open an umbrella issue discussing the changes that we might need to do to adapt godoc now that we will start to have modules.
For starters, now that we have$GOPATH/src/mod
folder containing versioned snapshots of various libraries, all of them show up in the/pkg/
html output.What is the recommendation to handle this case ? To simply dump all versions of all packages does not seem like the right thing to do. It also gives a sense of exposing internal details of storing "@vX.Y.Z" along with folder names.(This is taken care of by moving from src/mod to pkg/mod)
/pkg/
page ? In the current workflow, it won't show anything because $GOPATH/src is empty. Everything is inside $GOPATH/pkg/mod.Can we improve this ? Should we add an option to show
godoc
for a specific module root ? Or some notion to show documentation of only a given package.I have not been following the progress on modules. So please let me know if there are some obvious fixes to these.
@rsc @bradfitz
The text was updated successfully, but these errors were encountered: