Comments (19)
I've found this alias is useful
alias go-reshim='asdf reshim golang && export GOV=$(asdf current golang | sed '\''s/ *(set by .*)//g'\'') && export GOROOT="$ASDFINSTALLS/golang/$GOV/go/"'I have this alias called in my
.zshrc
or.bashrc
files, but I find that I need to call this everytime I switch to a new project.
Thanks, this has indeed been helpful. I made a slight modification since the sed parsing didn't quite work for my version of asdf.
alias go-reshim='asdf reshim golang && export GOROOT="$(asdf where golang)/go/"'
from asdf-golang.
After I thought I had it fixed with some of the previous suggestions, what ended up working for both GOPATH and GOROOT with repo-specific .tool-versions
was this in my ~/.bashrc
:
# go
export GOPATH=$(asdf where golang)/packages
export GOROOT=$(asdf where golang)/go
export PATH="${PATH}:$(go env GOPATH)/bin"
from asdf-golang.
it'd be good to document this in readme - what user needs to do for these to be set properly with asdf-golang
from asdf-golang.
Why do we need GOPATH
?
Since Go 1.11, you don't have to use GOPATH anymore. Simply go to your project directory and do this once:
go mod init github.com/youruser/yourrepo
- With this, Go creates a module root at that directory.
- You can create as many modules as you want.
- For step by step instructions, also see this answer.
https://stackoverflow.com/a/53026674/7391331
from asdf-golang.
+1 for this.
Also, it'd be great if the GOBIN
was set. Currently I have to manually set this.
from asdf-golang.
Using https://github.com/asdf-community/asdf-direnv with global .tool-versions
and .envrc
for overriding solves all the problems for me.
from asdf-golang.
@MuhmdRaouf
Here is my dotfiles https://github.com/matts966/dotfiles-open.
.zshrc
.config/direnv/direnvrc
.tool-versions
.envrc
to override defaultsexport ASDF_GOLANG_VERSION=1.15 use asdf
You can refer official doc for other shells.
https://github.com/direnv/direnv/blob/master/docs/hook.md
Edit: Maybe I misunderstood the problem. We should set additional export
for GOPATH
and GOROOT
even with asdf-direnv
for example by export GOROOT="$(asdf where golang)/go/"'
for your global installation.
Edit2: You can add root .envrc
with use asdf
to set GOPATH
and GOROOT
for the global installation
from asdf-golang.
I've found this alias is useful
alias go-reshim='asdf reshim golang && export GOV=$(asdf current golang | sed '\''s/ *(set by .*)//g'\'') && export GOROOT="$ASDFINSTALLS/golang/$GOV/go/"'
I have this alias called in my .zshrc
or .bashrc
files, but I find that I need to call this everytime I switch to a new project.
from asdf-golang.
I generally set my defaults in ~/.bashrc
and set project local versions in ~/.envrc
and use direnv to set/unset. With the latest versions of asdf
there is the ability to add a hook for environment variables, but it seems like it could get hairy to determine when I should override what the user already has in their env.
from asdf-golang.
Any advantages you see to trying to handle that here? I mean I could see setting them in the env hook if theyβre not already set. Thoughts?
from asdf-golang.
Any solution?
from asdf-golang.
I recently had this issue while using asdf-golang
in my Github Actions pipeline. My goreleaser
build step was failing when I was using just asdf-golang: goreleaser/goreleaser-action#241, but goreleaser
worked when I switched from asdf-golang
to https://github.com/actions/setup-go.
After some debugging, I realized one of the differences between the two was that https://github.com/actions/setup-go sets GOROOT
while asdf-golang
does not. I was able to rip out actions/setup-go
and use asdf-golang
again once I added another build step that sets GOROOT
for every job.: https://github.com/sourcegraph/ds-to-dhall/commit/a89565d1057a3ff1f9708a2241a291aacf1f42b7#diff-6495850214b8b7be403455ec207980c9
It would be great if asdf-golang
could handle setting GOROOT
automatically since it can lead to esoteric errors like goreleaser/goreleaser-action#241
from asdf-golang.
@ggilmore So looking at your case it seems like other tools need to know where the GOROOT
is and try to get it from the env instead of asking go. The bin/exec-env
script properly sets both the GOROOT
and the GOPATH
and other scripts could get that info from go env GOROOT
for example.
I'm still game to do something if we can figure out a clean way to update the env, but I don't know anything off hand. π€
from asdf-golang.
@RafalSkolasinski What do you have in mind when you say?
what user needs to do for these to be set properly with
asdf-golang
Are you asking what you should add to an envrc file or something like that?
from asdf-golang.
Could something like what the Java plugin does work here as well, with precmd
hooks to update the env? https://github.com/halcyon/asdf-java/blob/5b8533eb2b2c8215165bdd9568c5cb9441a94e13/set-java-home.zsh
from asdf-golang.
@Matts966 can you give us an example or snippet from your configs please to help us how we can do it.
from asdf-golang.
Why do we need
GOPATH
?
That's where things that you go install
go to, including the binaries. Though, you can set GOBIN somewhere other than GOPATH/bin.
asdf puts ~/.asdf/shims at the front of your path, so no matter what version you select, your shell will find the binary. I fell into using asdf-direnv, but for the increased performance when opening a shell (evaluating takes a long time for some reason).
Key thing is to not set any of the Go env vars as shell env vars - let ASDF manage them.
from asdf-golang.
@pythoninthegrass 's solution worked beautifully for me!
from asdf-golang.
from asdf-golang.
Related Issues (20)
- Use built in zsh function to get absolute path HOT 1
- go installed binaries not working for go v1.20 HOT 1
- Switching versions doesn't update `GOPATH` HOT 2
- Support for the GOBIN environment variable for each Go version. HOT 5
- Dependency Dashboard
- Would it be possible to set ASDF_GOLANG_MOD_VERSION_ENABLED in ~/.asdfrc? HOT 3
- Download site changed from dl.google.com to go.dev HOT 1
- Google changed golang download URL for golang 1.21 HOT 2
- Not able to disable `ASDF_GOLANG_MOD_VERSION_ENABLED` HOT 3
- Support toochain version
- installing golang new versions fails with the output : curl: (23) Failed writing header
- Infinite recursive call in `asdf list golang` HOT 13
- How to install old go versions on apple m1? HOT 1
- `go get -u $PACKAGES` deprecated HOT 2
- Does not respect the `${HOME}/.tool-versions` or `${HOME}/.go-version` HOT 2
- Download checksum verification fails on FreeBSD 13.1 HOT 2
- Versions prior to 1.5.4 don't have checksum files available, which renders them impossible to install HOT 1
- Support for tinygo HOT 1
- Support `go.work` for tool version HOT 1
- go.mod is not an asdf-compatible version file HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from asdf-golang.