SaaSHub helps you find the best software and product alternatives Learn more β
Top 23 Go CLI Projects
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
qrcp
:zap: Transfer files over wifi from your computer to your mobile device by scanning a QR code without leaving the terminal.
-
terragrunt
Terragrunt is a thin wrapper for Terraform that provides extra tools for working with multiple Terraform modules.
-
reviewdog
πΆ Automated code review tool integrated with any code analysis tools regardless of programming language
-
httpx
httpx is a fast and multi-purpose HTTP toolkit that allows running multiple probes using the retryablehttp library. (by projectdiscovery)
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Project mention: Ask HN: Any tool for managing large and variable command lines? | news.ycombinator.com | 2024-04-25In addition, I think bash's `operate-and-get-next` can be very helpful. When you go back through your shell history, you can hit Ctrl+o instead of enter and it will execute the command then put the next one in your history on the command line, and keep track of where you are in your history. This way, you can rerun a bunch of commands by going to the first one and Ctrl+o till you are done. And you can edit those commands and hit Ctrl+o and still go to the next previously run command.
Note: fzf's history search feature breaks this. https://github.com/junegunn/fzf/issues/2399
I've started to en ntegrate lazygit into my workflow.
It's quite easy to work with and I use git in a more powerfull way. My main problem is finding the way in all hotkeys.
https://github.com/jesseduffield/lazygit?tab=readme-ov-file#...
Project mention: Show HN: Docker-phobia: Analyze Docker image size with a treemap | news.ycombinator.com | 2024-04-28Cool, gonna try this soon. Would be great to use in combination with Dive (https://github.com/wagoodman/dive)
We can use the flag with --date or -date, Go already does the automatic check. We can make our entire boilerplate with this approach, but let's make it a little easier and use the Cobra CLI package.
This package is widely used for powerful CLI builds, it is used for example for Kubernetes CLI and GitHub CLI, in addition to offering some cool features such as automatic completion of shell, automatic recognition of flags (the tags) , and you can use -h or -help for example, among other facilities.
Project mention: Best practices for distributing and updating a Go CLI on Linux? | /r/golang | 2023-05-18Can you use a framework like urfavecli https://github.com/urfave/cli? This will auto-update every time it detects a new version from your CLI's GitHub repository
To get started, install Mods and check out some of the examples below. Since Mods has built-in Markdown formatting, you may also want to grab Glow to give the output some pizzazz.
Project mention: How do people create those sleek looking demos for startups? | news.ycombinator.com | 2024-05-01I'm a huge fan of charmbracelet's vhs:
https://github.com/charmbracelet/vhs
I have a gitlab CI job to update my demo .gif's every time I update my application; always ensures that things are up-to-date and provides gif/video recording that I've ran specific commands (perfect for auditors!)
Not sure these are really popular, but I cannot resist advertising a few utilities written in Go that I regularly use in my daily workflow:
- gdu: a NCDU clone, much faster on SSD mounts [1]
- duf: a `df` clone with a nicer interface [2]
- massren: a `vidir` clone (simpler to use but with fewer options) [3]
- gotop: a `top` clone [4]
- micro: a nice TUI editor [5]
Building this kind of tools in Go makes sense, as the executables are statically compiled and are thus easy to install on remote servers.
[1]: https://github.com/dundee/gdu
[2]: https://github.com/muesli/duf
[3]: https://github.com/laurent22/massren
[4]: https://github.com/xxxserxxx/gotop
[5]: https://github.com/zyedidia/micro
What I often use to just get the full key paths is yq (https://github.com/mikefarah/yq), piping into grep when necessary
yq -o=props
I see, thanks for replying and no worries! yeap some of the "self-describing" formats like msgpack, cbor etc will because of how fq works have to be decoded into something more of a meta-msgpack etc.
About blobs, if you want to change how (possibly large) binaries are represented as JSON you can use the bits_format options, see https://github.com/wader/fq/blob/master/doc/usage.md#options, so fq -o bits_format=md5 torepr ...
I can highly recommend to learn jq, it's what makes fq really useful, and as a bonus you will learn jq in general! :)
Undying fondness for aws-vault to securely cache my session credentials.
Project mention: Deploying a Containerized App to ECS Fargate Using a Private ECR Repo & Terragrunt | dev.to | 2024-04-22name: Configure on: push: branches: - main pull_request: branches: - main workflow_dispatch: inputs: destroy: description: 'Run Terragrunt destroy command' required: true default: 'false' type: choice options: - true - false jobs: apply: if: ${{ !inputs.destroy || inputs.destroy == 'false' }} runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup SSH uses: webfactory/[email protected] with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Setup Terraform uses: hashicorp/setup-terraform@v2 with: terraform_version: 1.5.5 terraform_wrapper: false - name: Setup Terragrunt run: | curl -LO "https://github.com/gruntwork-io/terragrunt/releases/download/v0.48.1/terragrunt_linux_amd64" chmod +x terragrunt_linux_amd64 sudo mv terragrunt_linux_amd64 /usr/local/bin/terragrunt terragrunt -v - name: Apply Terraform changes run: | cd dev terragrunt run-all apply -auto-approve --terragrunt-non-interactive -var AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -var AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY -var AWS_REGION=$AWS_DEFAULT_REGION env: AWS_ACCESS_KEY_ID: ${{ vars.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} destroy: if: ${{ inputs.destroy == 'true' }} runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup SSH uses: webfactory/[email protected] with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Setup Terraform uses: hashicorp/setup-terraform@v2 with: terraform_version: 1.5.5 terraform_wrapper: false - name: Setup Terragrunt run: | curl -LO "https://github.com/gruntwork-io/terragrunt/releases/download/v0.48.1/terragrunt_linux_amd64" chmod +x terragrunt_linux_amd64 sudo mv terragrunt_linux_amd64 /usr/local/bin/terragrunt terragrunt -v - name: Destroy Terraform changes run: | cd dev terragrunt run-all destroy -auto-approve --terragrunt-non-interactive -var AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -var AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY -var AWS_REGION=$AWS_DEFAULT_REGION env: AWS_ACCESS_KEY_ID: ${{ vars.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }}
Project mention: When creating console based applications how do you replicate the following realtime updates: | /r/golang | 2023-12-07I recommend looking at the charm libraries. Lip gloss https://github.com/charmbracelet/lipgloss can provide the styling and bubble tea can handle the screen updates and framework https://github.com/charmbracelet/bubbletea there is a premade progress bar component in bubbles library. https://github.com/charmbracelet/bubbles
I build a general converter from SARIF to Reviewdog Diagnostic Format (RDFormat), then use Reviewdog to give suggested code changes as well as the context of the changes for PR reviewing.
Project mention: HTTP toolkit that allows running multiple probes | news.ycombinator.com | 2024-04-02
Go CLI related posts
-
Klog: A plain-text file format and a command line tool for time tracking
-
How do people create those sleek looking demos for startups?
-
My last weeks GitHub contributions
-
Show HN: Open-source alternative to HashiCorp/IBM Vault
-
IBM to Acquire HashiCorp, Inc
-
Has anyone else had their Reddit account Kafka'd? How did you solve the issue?
-
IBM Planning to Acquire HashiCorp
-
A note from our sponsor - SaaSHub
www.saashub.com | 4 May 2024
Index
What are some of the best open-source CLI projects in Go? This list will help you:
Project | Stars | |
---|---|---|
1 | fzf | 59,920 |
2 | lazygit | 45,761 |
3 | dive | 43,709 |
4 | cobra | 36,077 |
5 | cli | 35,449 |
6 | bubbletea | 24,316 |
7 | urfave/cli | 21,662 |
8 | fx | 18,509 |
9 | glow | 14,825 |
10 | vhs | 13,910 |
11 | duf | 12,301 |
12 | yq | 10,840 |
13 | wuzz | 10,480 |
14 | qrcp | 9,776 |
15 | fq | 9,402 |
16 | katana | 8,694 |
17 | aws-vault | 8,153 |
18 | terragrunt | 7,641 |
19 | lipgloss | 7,367 |
20 | reviewdog | 7,385 |
21 | httpx | 6,837 |
22 | jid | 6,803 |
23 | drive | 6,630 |
Sponsored