DEV Community

loading...
Cover image for Useful Golang packages and tools

Useful Golang packages and tools

z0al profile image z0al Originally published at Medium on ใƒป3 min read

Cover image from: https://golang.org/doc/gopher/biplane.jpg

I recently built my first Go language program ever ๐Ÿ™Œ. In this post I would like to share some Go packages I found very useful.

So without further ado letโ€™s get started :)

GoReleaser

Building and distributing binaries for several platforms can be challenging. GoRelaeser helps you to automate delivering your app binaries with ease. It can generate archived release files (i.e. binaries + LICENSE + README files), checksums, Homebrew taps, Docker images, snap packages, release to GitHub (including the generating of customizable changelog ๐Ÿ˜ƒ ) and much more.

It works well with Travis and CircleCI, so you can automate almost everything ๐Ÿ‘Œ

๐Ÿ”— http://github.com/goreleaser

Cobra

Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. Cobra provides you everything you want to build awesome CLI, including sub-commands, automatic usage message, Pre and post run hooks, and generation of Man Page/Markdown/ResStructuredText docs.

Also, it provides automatic (without any configuration) suggestions when โ€œunknown commandโ€ happens, e.g (yes, Hugo is powered by Cobra):

$ hugo srever
Error: unknown command "srever" for "hugo"

Did you mean this?
        server

Run 'hugo --help' for usage.
Enter fullscreen mode Exit fullscreen mode

๐Ÿ”— https://github.com/spf13/cobra

Survey

Do you love Node.js inquirer package? if yes, then you will probably love Survey too. While it doesnโ€™t support yet all the features provided by inquirer, it has all the basic features and very easy to usage.

Survey package in action

๐Ÿ”— https://github.com/AlecAivazis/survey

Chalk

Again, if you are familiar with npm packages like chalk, you will feel home here. Chalk is a go package for styling console/terminal output. like this:

๐Ÿ”— https://godoc.org/github.com/ttacon/chalk

go-gitconfig

Probably is the smallest package of them all, but I find it really useful in git-related projects. Itโ€™s helpful when you want to extract some info from the global ~/.gitconfig or the local .git/config files. Here is a portion of the code I used to extract origin URL value to fetch remote issues from GitHub:

import (
    config "github.com/tcnksm/go-gitconfig"
)

remote := "origin"
url, err := config.Local(fmt.Sprintf("remote.%s.url", remote))

if err != nil {
    // .. print error
}
// use "url" value here to fetch from GitHub
Enter fullscreen mode Exit fullscreen mode

๐Ÿ”— https://github.com/tcnksm/go-gitconfig

Other link(s)

  1. A curated list of awesome Go frameworks, libraries and software
  2. List of useful(standard) go tools by @plutov
  3. My simple Git based To-Dos app written in Go

I hope you find this post useful. Thank you ;)


Originally posted on my blog

Discussion (9)

pic
Editor guide
Collapse
plutov profile image
Alex Pliutau

Nice article Ahmed. A bit related about tools - pliutau.com/go-tools-are-awesome/

Collapse
martyonthefly profile image
Sylvain Marty

Very useful post ! Thank you for sharing <3

Collapse
z0al profile image
z0al Author

Glad you find it useful, you're welcome :)

Collapse
ryuheechul profile image
Heechul Ryu

Very interesting and useful, thanks!

Collapse
z0al profile image
z0al Author

You're welcome :)

Collapse
defman profile image
Sergey Kislyakov ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡บ๐Ÿ‡ธ

My first article that I added to the reading list on dev.to. Thanks for sharing these packages!

Collapse
anikhasibul profile image
Hasibul Hasan (Anik)

Thanks for sharing!