The Go command line tool do not provide package cleaning option. At max it can remove object files and cached files which will remove executable file from bin folder and from pkg folder. But the source files would still be there.
So if you want to completely remove the package then you have to do it manually. Otherwise, create your own script to do this. Alternatively, you can use below script. Just put it somewhere so that it could be globally accessible.
Here is a shell script that can completely clean the go package that you have installed by using
File: goclean.sh
So if you want to completely remove the package then you have to do it manually. Otherwise, create your own script to do this. Alternatively, you can use below script. Just put it somewhere so that it could be globally accessible.
Here is a shell script that can completely clean the go package that you have installed by using
go get <package>
command.File: goclean.sh
#!/bin/env bash
goclean() {
local pkg=$1; shift || return 1
local ost
local cnt
local scr
echo "Clean removes object files from package source directories (ignore error)"
go clean -i $pkg
echo "Set local variables"
if [ "$(uname -m)" == "x86_64" ]; then
ost="$(uname)";
ost="${ost}_amd64"
cnt="${pkg//[^\/]}"
fi
echo "Delete the source directory and compiled package directory(ies)"
if (("${#cnt}" == "2")); then
rm -rf "${GOPATH%%:*}/src/${pkg%/*}"
rm -rf "${GOPATH%%:*}/pkg/${ost}/${pkg%/*}"
elif (("${#cnt}" > "2")); then
rm -rf "${GOPATH%%:*}/src/${pkg%/*/*}"
rm -rf "${GOPATH%%:*}/pkg/${ost}/${pkg%/*/*}"
fi
echo "Reload the current shell"
if [ -e "~/.bashrc" ]; then
source ~/.bashrc
elif [ -e "~/.bash_profile" ]; then
source ~/.bash_profile
fi
}
if [[ "$1" == "" ]]; then
echo "Package name is missing!"
else
goclean $1
fi
exit 0
Usage
Save it in file named goclean.sh.$ sh goclean.sh github.com/danwakefield/gosh
Alternatively, you can save it without extension as well like goclean. It would become more useful, if you would convert it into self-executable file.
$ chmod +x ./goclean
$ goclean github.com/danwakefield/gosh
References
Originally, I found this code at stackoverflow.com provided by ecwpz91 but that didn't worked properly on my MacOS. So I have tweaked it a little bit to suite my machine.If you're using MacOS then it would work like charm but I haven't tried it on any Linux machine. So guys, if you find it working properly at Linux then let the readers know about it in Comment section of this article.
Comments
Post a Comment