Cobra CLI tool to generate applications and commands

Cobra Generator

Cobra provides its own program that will create your application and add any commands you want. It's the easiest way to incorporate Cobra into your application.

Install the cobra generator with the command go install github.com/spf13/cobra/cobra. Go will automatically install it in your $GOPATH/bin directory which should be in your $PATH.

Once installed you should have the cobra command available. Confirm by typing cobra at a command line.

There are only two operations currently supported by the Cobra generator:

cobra init

The cobra init [app] command will create your initial application code for you. It is a very powerful application that will populate your program with the right structure so you can immediately enjoy all the benefits of Cobra. It can also apply the license you specify to your application.

With the introduction of Go modules, the Cobra generator has been simplified to take advantage of modules. The Cobra generator works from within a Go module.

Initalizing a module

If you already have a module, skip this step.

If you want to initialize a new Go module:

  1. Create a new directory
  2. cd into that directory
  3. run go mod init <MODNAME>

e.g.

cd $HOME/code 
mkdir myapp
cd myapp
go mod init github.com/spf13/myapp

Initalizing an Cobra CLI application

From within a Go module run cobra init. This will create a new barebones project for you to edit.

You should be able to run your new application immediately. Try it with go run main.go.

You will want to open up and edit 'cmd/root.go' and provide your own description and logic.

e.g.

cd $HOME/code/myapp
cobra init
go run main.go

Cobra init can also be run from a subdirectory such as how the cobra generator itself is organized. This is useful if you want to keep your application code separate from your library code.

Optional flags:

You can provide it your author name with the --author flag. e.g. cobra init --author "Steve Francia [email protected]"

You can provide a license to use with --license e.g. cobra init --license apache

Use the --viper flag to automatically setup viper

Viper is a companion to Cobra intended to provide easy handling of environment variables and config files and seamlessly connecting them to the application flags.

Add commands to a project

Once a cobra application is initialized you can continue to use the Cobra generator to add additional commands to your application. The command to do this is cobra add.

Let's say you created an app and you wanted the following commands for it:

  • app serve
  • app config
  • app config create

In your project directory (where your main.go file is) you would run the following:

cobra add serve
cobra add config
cobra add create -p 'configCmd'

cobra add supports all the same optional flags as cobra init does (described above).

You'll notice that this final command has a -p flag. This is used to assign a parent command to the newly added command. In this case, we want to assign the "create" command to the "config" command. All commands have a default parent of rootCmd if not specified.

By default cobra will append Cmd to the name provided and uses this name for the internal variable name. When specifying a parent, be sure to match the variable name used in the code.

Note: Use camelCase (not snake_case/kebab-case) for command names. Otherwise, you will encounter errors. For example, cobra add add-user is incorrect, but cobra add addUser is valid.

Once you have run these three commands you would have an app structure similar to the following:

  ▾ app/
    ▾ cmd/
        config.go
        create.go
        serve.go
        root.go
      main.go

At this point you can run go run main.go and it would run your app. go run main.go serve, go run main.go config, go run main.go config create along with go run main.go help serve, etc. would all work.

You now have a basic Cobra-based application up and running. Next step is to edit the files in cmd and customize them for your application.

For complete details on using the Cobra library, please read the The Cobra User Guide.

Have fun!

Configuring the cobra generator

The Cobra generator will be easier to use if you provide a simple configuration file which will help you eliminate providing a bunch of repeated information in flags over and over.

An example ~/.cobra.yaml file:

author: Steve Francia <[email protected]>
license: MIT
viper: true

You can also use built-in licenses. For example, GPLv2, GPLv3, LGPL, AGPL, MIT, 2-Clause BSD or 3-Clause BSD.

You can specify no license by setting license to none or you can specify a custom license:

author: Steve Francia <[email protected]>
year: 2020
license:
  header: This file is part of CLI application foo.
  text: |
    {{ .copyright }}

    This is my license. There are many like it, but this one is mine.
    My license is my best friend. It is my life. I must master it as I must
    master my life.

In the above custom license configuration the copyright line in the License text is generated from the author and year properties. The content of the LICENSE file is

Copyright © 2020 Steve Francia <[email protected]>

This is my license. There are many like it, but this one is mine.
My license is my best friend. It is my life. I must master it as I must
master my life.

The header property is used as the license header files. No interpolation is done. This is the example of the go file header.

/*
Copyright © 2020 Steve Francia <[email protected]>
This file is part of CLI application foo.
*/
Owner
Steve Francia
13x engineer • @golang Product Lead @Google • Prior EVP @Docker, @MongoDB, @Drupal board • @gohugoio, Cobra & spf13-vim creator
Steve Francia
Comments
  • Create `v1.3.0` tag

    Create `v1.3.0` tag

    In support of https://github.com/spf13/cobra/issues/1597, we want to tag this repository with the same "version" that was used before we migrated the code here. This still communicates the version of the cobra CLI but also represents the final tag that the two will correlate.

    In otherwords, this tag is the split in the road that will enable use to seperate cobra from cobra-cli

    The release note for v1.3.0 of this repo will note that all previous history and release markers can be tracked in the spf13/cobra repo.

    If there are no objections, I will do this within the week 👀

  • Initialize cobra-cli repo

    Initialize cobra-cli repo

    This PR sets up various housekeeping things for the new repo:

    • Copies existing license/contributing/conduct/CI root files from spf13/cobra
    • Adds copies of make targets from spf13/cobra, adjust CI config
    • Rename packages and go.mod to cobra-cli
    • Tidy go module

    Because this repo placed the binary at the root, it makes the binary name change to cobra-cli. Before merging any changes into this repo, we should make sure that's what we want, since that ripples to docs and usage, not just the install command (asked in https://github.com/spf13/cobra/issues/1597#issuecomment-1034462012)

    If we want to preserve the cobra binary, we should reinitialize it with the history placed under a github.com/spf13/cobra-cli/cobra subpackage.

    Preview of the configured CI runs passing at https://github.com/liggitt/cobra-cli/actions?query=branch%3Ainit

  • Bump actions/setup-go from 2 to 3

    Bump actions/setup-go from 2 to 3

    Bumps actions/setup-go from 2 to 3.

    Release notes

    Sourced from actions/setup-go's releases.

    v3.0.0

    What's Changed

    Breaking Changes

    With the update to Node 16, all scripts will now be run with Node 16 rather than Node 12.

    This new major release removes the stable input, so there is no need to specify additional input to use pre-release versions. This release also corrects the pre-release versions syntax to satisfy the SemVer notation (1.18.0-beta1 -> 1.18.0-beta.1, 1.18.0-rc1 -> 1.18.0-rc.1).

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-go@v3
        with:
          go-version: '1.18.0-rc.1' 
      - run: go version
    

    Add check-latest input

    In scope of this release we add the check-latest input. If check-latest is set to true, the action first checks if the cached version is the latest one. If the locally cached version is not the most up-to-date, a Go version will then be downloaded from go-versions repository. By default check-latest is set to false. Example of usage:

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-go@v2
        with:
          go-version: '1.16'
          check-latest: true
      - run: go version
    

    Moreover, we updated @actions/core from 1.2.6 to 1.6.0

    v2.1.5

    In scope of this release we updated matchers.json to improve the problem matcher pattern. For more information please refer to this pull request

    v2.1.4

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/setup-go/compare/v2.1.3...v2.1.4

    v2.1.3

    • Updated communication with runner to use environment files rather then workflow commands

    v2.1.2

    This release includes vendored licenses for this action's npm dependencies.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump actions/checkout from 2 to 3

    Bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.0

    • Update default runtime to node16

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    v2.3.0

    Fallback to the default branch

    v2.2.0

    Fetch all history for all tags and branches when fetch-depth=0

    v2.1.1

    Changes to support GHES (here and here)

    v2.1.0

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump actions/stale from 1 to 4.1.0

    Bump actions/stale from 1 to 4.1.0

    Bumps actions/stale from 1 to 4.1.0.

    Release notes

    Sourced from actions/stale's releases.

    v4.1.0

    Features

    v4.0.0

    ⚠️ This version contains breaking changes ⚠️

    Features

    Bug Fixes

    • dry-run: forbid mutations in dry-run (#500) (f1017f3), closes #499
    • logs: coloured logs (#465) (5fbbfba)
    • operations: fail fast the current batch to respect the operations limit (#474) (5f6f311), closes #466
    • label comparison: make label comparison case insensitive #517, closes #516
    • filtering comments by actor could have strange behavior: "stale" comments are now detected based on if the message is the stale message not who made the comment(#519), fixes #441, #509, #518

    Breaking Changes

    • The options skip-stale-issue-message and skip-stale-pr-message were removed. Instead, setting the options stale-issue-message and stale-pr-message will be enough to let the stale workflow add a comment. If the options are unset, a comment will not be added which was the equivalent of setting skip-stale-issue-message to true.
    • The operations-per-run option will be more effective. After migrating, you could face a failed-fast process workflow if you let the default value (30) or set it to a small number. In that case, you will see a warning at the end of the logs (if enabled) indicating that the workflow was stopped sooner to avoid consuming too much API calls. In most cases, you can just increase this limit to make sure to process everything in a single run.

    v3.0.19

    • Enhance logs to provide more detailed output
    • Split certain options to be more granular for Pull Requests vs Issues:
      • any-of-issue-labels
      • any-of-pr-labels
      • remove-issue-stale-when-updated
      • remove-pr-stale-when-updated
    • Dependency updates

    v3.0.18

    • Add any-of-labels option
    • Add only-issue-labels, only-pr-labels
    • Clean up, testing and dependency version bumps

    v3.0.17

    • Bug fixes, refactoring and milestone exemption

    v3.0.16

    • Minor bugfixes and logging improvements

    v3.0.15

    • Add milestone exemption
    • Add start date filtering

    ... (truncated)

    Changelog

    Sourced from actions/stale's changelog.

    Commits
    • 7fb802b Bump release to 4.1.0
    • 54197c7 Merge pull request #602 from actions/revert-breaking-change
    • 3a971ae Revert "Merge pull request #586 from C0ZEN/feature/split-pr-and-issue-options"
    • fc4a5ff Merge pull request #595 from actions/dependabot/npm_and_yarn/types/jest-27.0.2
    • db699ab Merge pull request #586 from C0ZEN/feature/split-pr-and-issue-options
    • f8e08de build(deps-dev): bump @​types/jest from 27.0.1 to 27.0.2
    • b83d488 Update dependencies (#592)
    • 1ff6cd7 build(deps): bump tmpl from 1.0.4 to 1.0.5 (#575)
    • 86fed0e build(deps-dev): bump jest-silent-reporter from 0.4.0 to 0.5.0 (#573)
    • 6700440 docs(readme): split the options between common, issues and prs
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • "Using config file" displays when doing completion command

    Running

    cobra-cli completion bash
    

    Displays

    Using config file: ~/.cobra.yaml
    

    This isn't causing an issue, but it's a bit of a cosmetic annoyance, especially since I have source <(cobra-cli completion bash). This text displays every time I open a new terminal tab.

    Is there a way to suppress it?

  • Completion for zsh seems not working on macOS

    Completion for zsh seems not working on macOS

    Hi.

    It seems the code completion is not working in zsh environment.

    Environment

    Apple M1 Pro with macOS Monterey 12.5.1

    Steps to reproduce

    mkdir myapp
    cd myapp
    go mod init myapp
    cobra-cli init
    cobra-cli add serve
    go build .
    ./myapp completion zsh > /tmp/completion
    source /tmp/completion
    

    now, try to complete:

    ./myapp se[TAB]
    

    nothing is completed after hitting TAB (even multiple hits), but it should complete the serve command.

    Generated zsh code

    % cat /tmp/completion
    #compdef myapp
    
    # zsh completion for myapp                                -*- shell-script -*-
    
    __myapp_debug()
    {
        local file="$BASH_COMP_DEBUG_FILE"
        if [[ -n ${file} ]]; then
            echo "$*" >> "${file}"
        fi
    }
    
    _myapp()
    {
        local shellCompDirectiveError=1
        local shellCompDirectiveNoSpace=2
        local shellCompDirectiveNoFileComp=4
        local shellCompDirectiveFilterFileExt=8
        local shellCompDirectiveFilterDirs=16
    
        local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace
        local -a completions
    
        __myapp_debug "\n========= starting completion logic =========="
        __myapp_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}"
    
        # The user could have moved the cursor backwards on the command-line.
        # We need to trigger completion from the $CURRENT location, so we need
        # to truncate the command-line ($words) up to the $CURRENT location.
        # (We cannot use $CURSOR as its value does not work when a command is an alias.)
        words=("${=words[1,CURRENT]}")
        __myapp_debug "Truncated words[*]: ${words[*]},"
    
        lastParam=${words[-1]}
        lastChar=${lastParam[-1]}
        __myapp_debug "lastParam: ${lastParam}, lastChar: ${lastChar}"
    
        # For zsh, when completing a flag with an = (e.g., myapp -n=<TAB>)
        # completions must be prefixed with the flag
        setopt local_options BASH_REMATCH
        if [[ "${lastParam}" =~ '-.*=' ]]; then
            # We are dealing with a flag with an =
            flagPrefix="-P ${BASH_REMATCH}"
        fi
    
        # Prepare the command to obtain completions
        requestComp="${words[1]} __complete ${words[2,-1]}"
        if [ "${lastChar}" = "" ]; then
            # If the last parameter is complete (there is a space following it)
            # We add an extra empty parameter so we can indicate this to the go completion code.
            __myapp_debug "Adding extra empty parameter"
            requestComp="${requestComp} \"\""
        fi
    
        __myapp_debug "About to call: eval ${requestComp}"
    
        # Use eval to handle any environment variables and such
        out=$(eval ${requestComp} 2>/dev/null)
        __myapp_debug "completion output: ${out}"
    
        # Extract the directive integer following a : from the last line
        local lastLine
        while IFS='\n' read -r line; do
            lastLine=${line}
        done < <(printf "%s\n" "${out[@]}")
        __myapp_debug "last line: ${lastLine}"
    
        if [ "${lastLine[1]}" = : ]; then
            directive=${lastLine[2,-1]}
            # Remove the directive including the : and the newline
            local suffix
            (( suffix=${#lastLine}+2))
            out=${out[1,-$suffix]}
        else
            # There is no directive specified.  Leave $out as is.
            __myapp_debug "No directive found.  Setting do default"
            directive=0
        fi
    
        __myapp_debug "directive: ${directive}"
        __myapp_debug "completions: ${out}"
        __myapp_debug "flagPrefix: ${flagPrefix}"
    
        if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
            __myapp_debug "Completion received error. Ignoring completions."
            return
        fi
    
        local activeHelpMarker="_activeHelp_ "
        local endIndex=${#activeHelpMarker}
        local startIndex=$((${#activeHelpMarker}+1))
        local hasActiveHelp=0
        while IFS='\n' read -r comp; do
            # Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker)
            if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then
                __myapp_debug "ActiveHelp found: $comp"
                comp="${comp[$startIndex,-1]}"
                if [ -n "$comp" ]; then
                    compadd -x "${comp}"
                    __myapp_debug "ActiveHelp will need delimiter"
                    hasActiveHelp=1
                fi
    
                continue
            fi
    
            if [ -n "$comp" ]; then
                # If requested, completions are returned with a description.
                # The description is preceded by a TAB character.
                # For zsh's _describe, we need to use a : instead of a TAB.
                # We first need to escape any : as part of the completion itself.
                comp=${comp//:/\\:}
    
                local tab="$(printf '\t')"
                comp=${comp//$tab/:}
    
                __myapp_debug "Adding completion: ${comp}"
                completions+=${comp}
                lastComp=$comp
            fi
        done < <(printf "%s\n" "${out[@]}")
    
        # Add a delimiter after the activeHelp statements, but only if:
        # - there are completions following the activeHelp statements, or
        # - file completion will be performed (so there will be choices after the activeHelp)
        if [ $hasActiveHelp -eq 1 ]; then
            if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then
                __myapp_debug "Adding activeHelp delimiter"
                compadd -x "--"
                hasActiveHelp=0
            fi
        fi
    
        if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
            __myapp_debug "Activating nospace."
            noSpace="-S ''"
        fi
    
        if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then
            # File extension filtering
            local filteringCmd
            filteringCmd='_files'
            for filter in ${completions[@]}; do
                if [ ${filter[1]} != '*' ]; then
                    # zsh requires a glob pattern to do file filtering
                    filter="\*.$filter"
                fi
                filteringCmd+=" -g $filter"
            done
            filteringCmd+=" ${flagPrefix}"
    
            __myapp_debug "File filtering command: $filteringCmd"
            _arguments '*:filename:'"$filteringCmd"
        elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then
            # File completion for directories only
            local subdir
            subdir="${completions[1]}"
            if [ -n "$subdir" ]; then
                __myapp_debug "Listing directories in $subdir"
                pushd "${subdir}" >/dev/null 2>&1
            else
                __myapp_debug "Listing directories in ."
            fi
    
            local result
            _arguments '*:dirname:_files -/'" ${flagPrefix}"
            result=$?
            if [ -n "$subdir" ]; then
                popd >/dev/null 2>&1
            fi
            return $result
        else
            __myapp_debug "Calling _describe"
            if eval _describe "completions" completions $flagPrefix $noSpace; then
                __myapp_debug "_describe found some completions"
    
                # Return the success of having called _describe
                return 0
            else
                __myapp_debug "_describe did not find completions."
                __myapp_debug "Checking if we should do file completion."
                if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
                    __myapp_debug "deactivating file completion"
    
                    # We must return an error code here to let zsh know that there were no
                    # completions found by _describe; this is what will trigger other
                    # matching algorithms to attempt to find completions.
                    # For example zsh can match letters in the middle of words.
                    return 1
                else
                    # Perform file completion
                    __myapp_debug "Activating file completion"
    
                    # We must return the result of this command, so it must be the
                    # last command, or else we must store its result to return it.
                    _arguments '*:filename:_files'" ${flagPrefix}"
                fi
            fi
        fi
    }
    
    # don't run the completion function when being source-ed or eval-ed
    if [ "$funcstack[1]" = "_myapp" ]; then
        _myapp
    fi
    

    Is this a bug, or am I doing something wrong? 😕

    TIA

  • Cannot run in docker img: busybox,scratch;  output: . /bin: no such file or directory

    Cannot run in docker img: busybox,scratch; output: . /bin: no such file or directory

    my bin:

    cobra-cli init --viper
    Your Cobra application is ready at ...
    
    sudo docker build -t bin . && sudo docker run -it --rm bin
    Step 1/3 : FROM scratch
    ---> 
    Step 2/3 : COPY ${PWD}/bin .
    ---> f18dcc8e0e25
    Step 3/3 : ENTRYPOINT ["./bin"]
    ---> Running in dc5fd26d812f
    Removing intermediate container dc5fd26d812f
    ---> ee78f634bd9f
    Successfully built ee78f634bd9f
    Successfully tagged bin:latest
    exec ./bin: no such file or directory
    

    my Dockerfile

    FROM scratch
    COPY ${PWD}/bin .
    ENTRYPOINT ["./bin"]
    

    About...

    debian and local is fine golang: 1.18.2 cobra: 1.4.0 viper: 1.11.0

  • Bump github.com/spf13/viper from 1.10.1 to 1.11.0

    Bump github.com/spf13/viper from 1.10.1 to 1.11.0

    Bumps github.com/spf13/viper from 1.10.1 to 1.11.0.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.11.0

    What's Changed

    Exciting New Features 🎉

    Enhancements 🚀

    Bug Fixes 🐛

    Breaking Changes 🛠

    Dependency Updates ⬆️

    New Contributors

    Full Changelog: https://github.com/spf13/viper/compare/v1.10.1...v1.11.0

    Commits
    • 6986c0a chore: update crypt
    • 65293ec add release note configuration
    • 6804da7 chore!: drop Go 1.14 support
    • 5b21ca1 fix: deprecated config
    • 55fac10 chore: fix lint
    • e0bf4ac chore: add go 1.18 builds
    • 973c265 build(deps): bump github.com/pelletier/go-toml/v2
    • 129e4f9 build(deps): bump github.com/pelletier/go-toml/v2
    • 9a8603d build(deps): bump actions/setup-go from 2 to 3
    • dc76f3c build(deps): bump github.com/spf13/afero from 1.8.1 to 1.8.2
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump golangci/golangci-lint-action from 2 to 3

    Bump golangci/golangci-lint-action from 2 to 3

    Bumps golangci/golangci-lint-action from 2 to 3.

    Release notes

    Sourced from golangci/golangci-lint-action's releases.

    v3.0.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/golangci/golangci-lint-action/compare/v2...v3.0.0

    Bump version v2.5.2

    Bug fixes

    • 5c56cd6 Extract and don't mangle User Args. (#200)

    Dependencies

    • e3c53fe bump @​typescript-eslint/eslint-plugin (#194)
    • 3b9f80e bump @​typescript-eslint/parser from 4.18.0 to 4.19.0 (#195)
    • 9845713 bump @​types/node from 14.14.35 to 14.14.37 (#197)
    • e789ee1 bump eslint from 7.22.0 to 7.23.0 (#196)
    • f2e9a96 bump @​typescript-eslint/eslint-plugin (#188)
    • 818081a bump @​types/node from 14.14.34 to 14.14.35 (#189)
    • 6671836 bump @​typescript-eslint/parser from 4.17.0 to 4.18.0 (#190)
    • 526907e bump @​typescript-eslint/parser from 4.16.1 to 4.17.0 (#185)
    • 6b6ba16 bump @​typescript-eslint/eslint-plugin (#186)
    • 9cab4ef bump eslint from 7.21.0 to 7.22.0 (#187)
    • 0c76572 bump @​types/node from 14.14.32 to 14.14.34 (#184)
    • 0dfde21 bump @​typescript-eslint/parser from 4.15.2 to 4.16.1 (#182)
    • 9dcf389 bump typescript from 4.2.2 to 4.2.3 (#181)
    • 34d3904 bump @​types/node from 14.14.31 to 14.14.32 (#180)
    • e30b22f bump @​typescript-eslint/eslint-plugin (#179)
    • 8f30d25 bump eslint from 7.20.0 to 7.21.0 (#177)
    • 0b64a40 bump @​typescript-eslint/parser from 4.15.1 to 4.15.2 (#176)
    • 973b3a3 bump eslint-config-prettier from 8.0.0 to 8.1.0 (#178)
    • 6ea3de1 bump @​typescript-eslint/eslint-plugin (#175)
    • 6eec6af bump typescript from 4.1.5 to 4.2.2 (#174)

    v2.5.1

    Bug fixes:

    • d9f0e73 Check that go.mod exists in reading the version (#173)

    v2.5.0

    New Features:

    • 51485a4 Try to get version from go.mod file (#118)

    ... (truncated)

    Commits
    • b517f99 fix version in package-lock.json (#407)
    • 9636c5b Update version to 3.1.0 in package.json (#406)
    • 03e4bef ci(dep): Add step to commit changes if PR has dependencies label (#108)
    • cdfc708 Allow to disable caching completely (#351)
    • 7d5614c build(deps-dev): bump eslint from 8.9.0 to 8.10.0 (#405)
    • c675eb7 Update all direct dependencies (#404)
    • 423fbaf Remove Setup-Go (#403)
    • bcfc6f9 build(deps-dev): bump eslint-plugin-import from 2.25.3 to 2.25.4 (#402)
    • d34ac2a build(deps): bump setup-go from v2.1.4 to v2.2.0 (#401)
    • e4b538e build(deps-dev): bump @​types/node from 16.11.10 to 17.0.19 (#400)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump actions/cache from 2 to 3.0.1

    Bump actions/cache from 2 to 3.0.1

    Bumps actions/cache from 2 to 3.0.1.

    Release notes

    Sourced from actions/cache's releases.

    v3.0.1

    • Added support for caching from GHES 3.5.
    • Fixed download issue for files > 2GB during restore.

    v3.0.0

    • This change adds a minimum runner version(node12 -> node16), which can break users using an out-of-date/fork of the runner. This would be most commonly affecting users on GHES 3.3 or before, as those runners do not support node16 actions and they can use actions from github.com via github connect or manually copying the repo to their GHES instance.

    • Few dependencies and cache action usage examples have also been updated.

    v2.1.7

    Support 10GB cache upload using the latest version 1.0.8 of @actions/cache

    v2.1.6

    • Catch unhandled "bad file descriptor" errors that sometimes occurs when the cache server returns non-successful response (actions/cache#596)

    v2.1.5

    • Fix permissions error seen when extracting caches with GNU tar that were previously created using BSD tar (actions/cache#527)

    v2.1.4

    • Make caching more verbose #650
    • Use GNU tar on macOS if available #701

    v2.1.3

    • Upgrades @actions/core to v1.2.6 for CVE-2020-15228. This action was not using the affected methods.
    • Fix error handling in uploadChunk where 400-level errors were not being detected and handled correctly

    v2.1.2

    • Adds input to limit the chunk upload size, useful for self-hosted runners with slower upload speeds
    • No-op when executing on GHES

    v2.1.1

    • Update @actions/cache package to v1.0.2 which allows cache action to use posix format when taring files.

    v2.1.0

    • Replaces the http-client with the Azure Storage SDK for NodeJS when downloading cache content from Azure. This should help improve download performance and reliability as the SDK downloads files in 4 MB chunks, which can be parallelized and retried independently
    • Display download progress and speed
    Changelog

    Sourced from actions/cache's changelog.

    3.0.1

    • Added support for caching from GHES 3.5.
    • Fixed download issue for files > 2GB during restore.
    Commits
    • 136d96b Enabling actions/cache for GHES based on presence of AC service (#774)
    • 7d4f40b Bumping up the version to fix download issue for files > 2 GB. (#775)
    • 2d8d0d1 Updated what's new. (#771)
    • 7799d86 Updated the usage and docs to the major version release. (#770)
    • 4b0cf6c Merge pull request #769 from actions/users/ashwinsangem/bump_major_version
    • 60c606a Update licensed files
    • b6e9a91 Revert "Updated to the latest version."
    • c842503 Updated to the latest version.
    • 2b7da2a Bumped up to a major version.
    • deae296 Merge pull request #651 from magnetikonline/fix-golang-windows-example
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump actions/stale from 5.1.0 to 7.0.0

    Bump actions/stale from 5.1.0 to 7.0.0

    Bumps actions/stale from 5.1.0 to 7.0.0.

    Release notes

    Sourced from actions/stale's releases.

    v7.0.0

    ⚠️ This version contains breaking changes ⚠️

    What's Changed

    Breaking Changes

    • In this release we prevent this action from managing the stale label on items included in exempt-issue-labels and exempt-pr-labels
    • We decided that this is outside of the scope of this action, and to be left up to the maintainer

    New Contributors

    Full Changelog: https://github.com/actions/stale/compare/v6...v7.0.0

    v6.0.1

    Update @​actions/core to 1.10.0 #839

    Full Changelog: https://github.com/actions/stale/compare/v6.0.0...v6.0.1

    v6.0.0

    :warning: Breaking change :warning:

    Issues/PRs default close-issue-reason is now not_planned(#789)

    V5.2.0

    Features: New option include-only-assigned enables users to process only issues/PRs that are already assigned. If there is no assignees and this option is set, issue will not be processed per: issue/596

    Fixes: Fix date comparison edge case PR/816

    Dependency Updates: PR/812

    Fix issue when days-before-close is more than days-before-stale

    fixes a bug introduced in #717

    fixed in #775

    Changelog

    Sourced from actions/stale's changelog.

    [7.0.0]

    :warning: Breaking change :warning:

    [6.0.1]

    Update @​actions/core to v1.10.0 (#839)

    [6.0.0]

    :warning: Breaking change :warning:

    Issues/PRs default close-issue-reason is now not_planned(#789)

    Commits
    • 6f05e42 draft release for v7.0.0 (#888)
    • eed91cb Update how stale handles exempt items (#874)
    • 10dc265 Merge pull request #880 from akv-platform/update-stale-repo
    • 9c1eb3f Update .md files and allign build-test.yml with the current test.yml
    • bc357bd Update .github/workflows/release-new-action-version.yml
    • 690ede5 Update .github/ISSUE_TEMPLATE/bug_report.md
    • afbcabf Merge branch 'main' into update-stale-repo
    • e364411 Update name of codeql.yml file
    • 627cef3 fix print outputs step (#859)
    • 975308f Merge pull request #876 from jongwooo/chore/use-cache-in-check-dist
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Introduce new version sub command (issue #49)

    Introduce new version sub command (issue #49)

    Description: This PR adds a version subcommand.

    Note: The version in the example is 1.3.0-13-gd146541 because we are 13 commitsto main since the v1.3.0 release.

    ./bin/cobra-cli_darwin_amd64 --version
    cobra-cli version: 1.3.0-13-gd146541
    git version: d146541ba2222bd380b125b10f92ed0e1cc98109
    Go version: go1.18.3
       os: darwin
       arch: amd64
       compiler: gc
    

    Closes: #49

  • Don't touch my licence

    Don't touch my licence

    Description: This PR adds the flag --skipLicense to the init command to skip license creation.

    ./bin/cobra-cli_darwin_amd64 init --help
    Initialize (cobra init) will create a new application, with a license
    and the appropriate structure for a Cobra-based CLI application.
    
    Cobra init must be run inside of a go module (please run "go mod init <MODNAME>" first)
    
    Usage:
      cobra-cli init [path] [flags]
    
    Aliases:
      init, initialize, initialise, create
    
    Flags:
      -h, --help          help for init
      -s, --skipLicense   skip license creation
    

    Closes #39

  • coba-cli overwrites existing main.go with no warning

    coba-cli overwrites existing main.go with no warning

    When run in an existing project, cobra-cli init will silently overwrite an existing main.go.

    In this situation, cobra-cli should emit an error and exit without making changes rather than overwriting existing code.

  • Bump github.com/spf13/viper from 1.12.0 to 1.14.0

    Bump github.com/spf13/viper from 1.12.0 to 1.14.0

    Bumps github.com/spf13/viper from 1.12.0 to 1.14.0.

    Release notes

    Sourced from github.com/spf13/viper's releases.

    v1.14.0

    What's Changed

    Enhancements 🚀

    Breaking Changes 🛠

    Dependency Updates ⬆️

    Full Changelog: https://github.com/spf13/viper/compare/v1.13.0...v1.14.0

    v1.13.0

    Important: This is the last release supporting Go 1.15.

    What's Changed

    Exciting New Features 🎉

    Enhancements 🚀

    Bug Fixes 🐛

    Dependency Updates ⬆️

    New Contributors

    ... (truncated)

    Commits
    • b89e554 chore: update crypt
    • db9f89a chore: disable watch on appengine
    • 4b8d148 refactor: use new Has fsnotify method for event matching
    • 2e99a57 refactor: rename watch file to unsupported
    • dcb7f30 feat: fix compilation for all platforms unsupported by fsnotify
    • 2e04739 ci: drop dedicated wasm build
    • b2234f2 ci: add build for aix
    • 52009d3 feat: disable watcher on aix
    • b274f63 build(deps): bump github.com/fsnotify/fsnotify from 1.5.4 to 1.6.0
    • 7c62cfd build(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump actions/cache from 2 to 3.0.11

    Bump actions/cache from 2 to 3.0.11

    Bumps actions/cache from 2 to 3.0.11.

    Release notes

    Sourced from actions/cache's releases.

    v3.0.11

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3...v3.0.11

    v3.0.10

    • Fix a bug with sorting inputs.
    • Update definition for restore-keys in README.md

    v3.0.9

    • Enhanced the warning message for cache unavailability in case of GHES.

    v3.0.8

    What's Changed

    • Fix zstd not working for windows on gnu tar in issues.
    • Allow users to provide a custom timeout as input for aborting cache segment download using the environment variable SEGMENT_DOWNLOAD_TIMEOUT_MIN. Default is 60 minutes.

    v3.0.7

    What's Changed

    • Fix for the download stuck problem has been added in actions/cache for users who were intermittently facing the issue. As part of this fix, new timeout has been introduced in the download step to stop the download if it doesn't complete within an hour and run the rest of the workflow without erroring out.

    v3.0.6

    What's Changed

    • Add example for clojure lein project dependencies by @​shivamarora1 in PR actions/cache#835
    • Update toolkit's cache npm module to latest. Bump cache version to v3.0.6 by @​pdotl in PR actions/cache#887
    • Fix issue #809 where cache save/restore was failing for Amazon Linux 2 runners due to older tar version
    • Fix issue #833 where cache save was not working for caching github workspace directory

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3...v3.0.6

    v3.0.5

    Removed error handling by consuming actions/cache 3.0 toolkit, Now cache server error handling will be done by toolkit.

    v3.0.4

    In this release, we have fixed the tar creation error while trying to create it with path as ~/ home folder on ubuntu-latest.

    v3.0.3

    Fixed avoiding empty cache save when no files are available for caching. (actions/cache#624)

    v3.0.2

    ... (truncated)

    Changelog

    Sourced from actions/cache's changelog.

    3.0.11

    • Update toolkit version to 3.0.5 to include @actions/core@^1.10.0
    • Update @actions/cache to use updated saveState and setOutput functions from @actions/core@^1.10.0
    Commits
    • 9b0c1fc Merge pull request #956 from actions/pdotl-version-bump
    • 18103f6 Fix licensed status error
    • 3e383cd Update RELEASES
    • 43428ea toolkit versioon update and version bump for cache
    • 1c73980 3.0.11
    • a3f5edc Merge pull request #950 from rentziass/rentziass/update-actions-core
    • 831ee69 Update licenses
    • b9c8bfe Update @​actions/core to 1.10.0
    • 0f20846 Merge pull request #946 from actions/Phantsure-patch-2
    • 862fc14 Update README.md
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Generate an interactive, autocompleting shell for any Cobra CLI
Generate an interactive, autocompleting shell for any Cobra CLI

cobra-shell Description Leverages the Cobra completion API to generate an interactive shell for any Cobra CLI, powered by go-prompt. On-the-fly autoco

Dec 19, 2022
Go-file-downloader-ftctl - A file downloader cli built using golang. Makes use of cobra for building the cli and go concurrent feature to download files.

ftctl This is a file downloader cli written in Golang which uses the concurrent feature of go to download files. The cli is built using cobra. How to

Jan 2, 2022
painless task queue manager for shell commands with an intuitive cli interface (execute shell commands in distributed cloud-native queue manager).

EXEQ DOCS STILL IN PROGRESS. Execute shell commands in queues via cli or http interface. Features Simple intuitive tiny cli app. Modular queue backend

Dec 14, 2022
CLI to run a docker image with R. CLI built using cobra library in go.
CLI  to run a docker image with R. CLI built using cobra library in go.

BlueBeak Installation Guide Task 1: Building the CLI The directory structure looks like Fastest process: 1)cd into bbtools 2)cd into bbtools/bin 3)I h

Dec 20, 2021
Build an interactive CLI application with Go, Cobra and promptui. Video tutorial available on the Div Rhino YouTube channel.

Build an interactive CLI app with Go, Cobra and promptui Text tutorial: https://divrhino.com/articles/build-interactive-cli-app-with-go-cobra-promptui

Dec 8, 2022
Simple CLI using spf13/cobra and Flink REST API

Flinkctl Flinkctl is a simple CLI written on Go using Cobra created to facilitate my team's daily basis work with multiple Flink clusters at Azion Tec

Aug 16, 2022
It‘s a cmd-line tool like `make` and `task`, supporting nested args and alias using `cobra`

It‘s a cmd-line tool like `make` and `task`, supporting nested args and alias using `cobra`. It's a makefile alternative and a shell wrapper.

Oct 18, 2022
A cli client-server app with cobra
A cli client-server app with cobra

cli-client-server-calculator a cli client-server app with cobra overview this project is a cli client-server app in which client gives a bunch of numb

Dec 7, 2021
Cobra CLI challenge Segsalerty

Banking app done using Cobra CLI - Segsalerty challenge c/o Segun Mustafa It uses a database.json file as datastore for queries - createCustomer, Upda

Dec 14, 2021
This project is used to get familiar with GoLang cli apps, along with cobra generator.

SecretCTL SecretCTL About the project Status Getting started Layout Notes About the project This project is used to get familiar with GoLang cli apps,

Jan 11, 2022
The blackbean is a command tool for elasticsearch operations by using cobra.
The blackbean is a command tool for elasticsearch operations by using cobra.

The blackbean is a command tool for elasticsearch operations by using cobra. Besides, blackbean is the name of my lovely French bulldog.

Mar 3, 2022
A CLI tool for running Go commands with colorized output
A CLI tool for running Go commands with colorized output

Goli Goli is a CLI Tool for running Go commands with colorized output. Note: Goli is still a WIP. It has very basic commands and limitations. Feel fre

Nov 24, 2022
Effortlessly generate chmod commands

?? CHMOD-CLI Simple cli tool that brings the chmod command in tui format. Genera

Dec 20, 2022
Reusable golang-migrate library using cobra utility

shift Reusable golang-migrate library using cobra utility Example Usage package main import ( "sql/db" "github.com/purwandi/shift" "github.com

Dec 16, 2021
command argument completion generator for spf13/cobra

Command argument completion generator for cobra. You can read more about it here: A pragmatic approach to shell completion.

Dec 26, 2022
Gobby-cli - CLI application to debug gobby applications

go(bby) Interactive debugging tool for gobby applications Usage Coming soon™ Ins

Feb 8, 2022
Nebula Diagnosis CLI Tool is an information diagnosis cli tool for the nebula service and the node to which the service belongs.

Nebula Diagnosis CLI Tool is an information diagnosis cli tool for the nebula service and the node to which the service belongs.

Jan 12, 2022
A tool to manage all your boilerplate from cli and generate files for you !

A tool to manage all your boilerplate from cli and generate files for you !

Jul 20, 2022