Manul - The madness vendoring utility for Golang programs

MANUL Build Status License Go Report Card

madness

Manul is a vendoring utility for Go programs.

Installation

manul can be obtained using go get:

go get github.com/kovetskiy/manul

Packages are also available for Ubuntu/Debian and Arch Linux.

What's the reason for yet another utility?

Because all other vendor utilities suffer from the following:

  • Some wrap the go binary and spoof the GOPATH env variable. You will have a non-go-gettable project which needs additional software in order to compile and run;

  • Some copy the source code of dependencies into the vendor directory:

    • It will be nearly impossible to find anything using GitHub Search, because you will get many false-positive results;
    • Updating dependencies will require manual intervention and committing a lot of modified lines straight into the main repo;
    • You will not be able to tell what version of dependency your project is using will by looking at repository; you have to keep versions in the additional ambiguous file with vendors associated with commits.
  • Various architecture problems:

    • Impossible to update all or specific vendored dependencies;
    • Impossible to rollback vendored dependencies to specific version;
    • Impossible to remove unused vendored dependencies;
    • Impossible to lock version of vendored dependency.

Solution

We all love git, it's a very powerful instrument. Why don't we use its power for vendoring dependencies using an awesome feature, which is called git submodule?

With git submodule you will have a git repository for each dependency. They can be managed in the same way as main project by git.

Pros:

  • No need for additional software for building/running your Go project;

  • No need for additional JSON/TOML/YAML file for storing dependencies;

  • Update vendored dependencies directly from remote origins;

  • Rollback changes in dependencies;

  • Go-gettable

git submodule might look like a Silver Bullet, but it's still clumsy to work with manually. We want to have a powerful yet simple interface for vendoring dependencies using this technology.

manul can do it for us.

Usage

Who needs a documentation when there are GIFs?

First of all, we should request dependencies which we have in our project. To do this, just run manul with -Q (query) flag. It will output all the project imports (dependencies), like this:

first query

For example, we have six dependencies, let's lock versions of critical dependencies by adding submodules: in our case it's zhash and blackfriday packages.

For locking versions (installing dependencies) we should use -I (install) flag and specify dependencies, which we wish to install:

install two dependencies

After installation we can have a look for vendored and non-vendored dependencies by using flag -Q. After previous step we should see git commits along with two already vendored dependencies (zhash and blackfriday):

query after install

Let's install submodules for remaining dependencies, go the limit! Just run manul with flag -I without specifying any dependencies, manul will install all detected dependencies with skipping already vendored:

install all dependencies

Wow, that was crazy! Now, to update some vendored dependencies, for example, docopt-go package, manul should be invoked with the flag -U and import path (github.com/docopt/docopt-go):

update docopt

manul can be used to remove specified submodules of vendored dependencies by using -R (remove) flag and specifying dependencies import path:

removing

By the way, manul can detect and remove unused vendored dependencies using -C (clean) flag:

unused dependencies

manul can also get you a specific version of a dependency by using a commit-ish, for example:

  • manul -I golang.org/x/foo=34a235h1 will install foo at the specified commit
  • manul -U github.com/x/bar=this-tag will update it to this-tag version.

Let's summarize:

  • -I [ ...] - install git submodules for specified/all dependencies;
  • -U [ ...] - update specified/all already vendored dependencies;
  • -R [ ...] - remove git submodules for specified/all dependencies;
  • -Q [ ...] - list all used dependencies;
  • -C - detect and remove all git submodules for unused vendored dependencies.

You can see similar help message by passing -h or --help flag.

Owner
Comments
  • Support projects with empty root

    Support projects with empty root

    If project has no Go files inside root directory manul -Q will exit with the following message:

    no buildable Go source files in /path/to/repo
    

    For go tool it is solved with ./... argument which means walk current directory recursively.

  • Refactor dependency calculations

    Refactor dependency calculations

    • Now honors recursive flag (fixes kovetskiy/manul#30)
    • Option to include testing dependencies (fixes kovetskiy/manul#15)
    • Don't include recursive deps if they are already vendored (fixes kovetskiy/manul#3
    • Don't vendor unused packages (fixes kovetskiy/manul#30)
    • Do a got get at the beginning as a usability feature (fixes kovetskiy/manul#26)
    • Should also fix kovetskiy/manul#27, though unconfirmed
  • Manul keeps complaining about missing packages

    Manul keeps complaining about missing packages

    Just installed Manul – switching from govendor and my manual approach.

    I removed the original vendor directory and just wanted to see what Manul does: manul -v -Q.

    Output is as following:

    2016/05/17 09:46:34 cannot find package "google.golang.org/grpc" in any of:
        /Users/annismckenzie/git/GitHub/go/src/google.golang.org/grpc (from $GOROOT)
        /Users/annismckenzie/git/go/src/google.golang.org/grpc (from $GOPATH)
    

    Not sure what's going (wr)on(g). Of course that package isn't there, I want Manul to handle this. So I did a manual go get google.golang.org/grpc but now it's complaining about the next package. Did I miss something? Using go1.6.2.

  • Update subcommand needs `git submodule update --init`

    Update subcommand needs `git submodule update --init`

    dependency on gopkg.in/ini.v1 shows vendored, however it's empty inside

    manul -Q
    gopkg.in/ini.v1                                   6f66b0e091edb3c7b380f7c4f0f884274d550b67
    
    manul -I 
    2016/12/30 23:19:40 skipping gopkg.in/ini.v1, already vendored
    
    ls -alh vendor/gopkg.in/ini.v1
    total 0
    drwxr-xr-x  2 zhuo  staff    68B 12 30 22:00 .
    drwxr-xr-x  3 zhuo  staff   102B 12 30 22:00 ..
    
    manul -U -v gopkg.in/ini.v1
    2016/12/30 23:25:17 exec ["git" "submodule" "status"]
    2016/12/30 23:25:17 updating dependency gopkg.in/ini.v1
    2016/12/30 23:25:17 exec ["git" "pull" "origin" "master"] in /Users/zhuo/go/src/github.com/mengzhuo/bla/vendor/gopkg.in/ini.v1
    updated 1 dependency
    
    ls vendor/gopkg.in/ini.v1 
    // it's still empty
    
    git submodule status
    -6f66b0e091edb3c7b380f7c4f0f884274d550b67 vendor/gopkg.in/ini.v1
    

    version: manul 1.4

  • Vendoring golang.org/x/net/ipv4

    Vendoring golang.org/x/net/ipv4

    Hello,

    My project depends on golang.org/x/net/ipv4 package but manul -Q command doesn't list it in the dependency list. I'm also unable vendor it using manul -I command. Here is the output:

    $ manul -Q
    2016/07/23 23:06:38 cannot find package "golang.org/x/net/ipv4" in any of:
        /usr/x86_64-pc-linux-gnu/lib/go/src/golang.org/x/net/ipv4 (from $GOROOT)
        /home/burak/Projects/go/src/golang.org/x/net/ipv4 (from $GOPATH)
    2016/07/23 23:06:38 cannot find package "golang.org/x/net/ipv4" in any of:
        /usr/x86_64-pc-linux-gnu/lib/go/src/golang.org/x/net/ipv4 (from $GOROOT)
        /home/burak/Projects/go/src/golang.org/x/net/ipv4 (from $GOPATH)
    2016/07/23 23:06:38 cannot find package "golang.org/x/net/netutil" in any of:
        /usr/x86_64-pc-linux-gnu/lib/go/src/golang.org/x/net/netutil (from $GOROOT)
        /home/burak/Projects/go/src/golang.org/x/net/netutil (from $GOPATH)
    github.com/Sirupsen/logrus    a283a10442df8dc09befd873fab202bf8a253d6a
    github.com/gorilla/handlers   801d6e3b008914ee888c9ab9b1b379b9a56fbf44
    github.com/gorilla/websocket  5e2e56d5dfd46884df1036f828777ee6273f2cff
    github.com/purak/httptimeout  995bf143603e7eacbe26b771b837dacbe797d654
    github.com/syndtr/goleveldb   ab8b5dcf1042e818ab68e770d465112a899b668e
    github.com/syndtr/gosnappy    156a073208e131d7d2e212cb749feae7c339e846
    gopkg.in/tylerb/graceful.v1   c838c13b2beeea4f4f54496da96a3a6ae567c37a
    gopkg.in/yaml.v2              e4d366fc3c7938e2958e662b4258c7a89e1f0e3e
    
    $ manul -I golang.org/x/net/ipv4
    2016/07/23 23:13:55 unknown dependency golang.org/x/net/ipv4
    
    ~/Projects/go/src/golang.org/x/net $ git remote -v
    origin  https://go.googlesource.com/net (fetch)
    origin  https://go.googlesource.com/net (push)
    

    golang.org/x/blabla repositories seem an exceptional case for manul. Do you have any idea how I add this sort of dependencies via manul?

  • How to get specific SHAs and releases

    How to get specific SHAs and releases

    The title basically says it all. How do I get another sha then master and how do I get a specific release? Couldn't find info about that in the readme.

  • not working on mac osx

    not working on mac osx

    test file

    package main
    
    import "github.com/kovetskiy/manul-test-foo"
    
    func main() {
        foo.A()
    }
    

    run command throw error, but "all dependencies already vendored" in the end.

     $ /usr/local/bin/manul -I
    2016/10/23 00:41:47 cannot find package "github.com/kovetskiy/manul-test-foo" in any of:
        /usr/local/Cellar/go/1.7.3/libexec/src/github.com/kovetskiy/manul-test-foo (from $GOROOT)
        /opt/dev/fxquant/go/src/github.com/kovetskiy/manul-test-foo (from $GOPATH)
    all dependencies already vendored
    

    version

    $ /usr/local/bin/manul --version
    manul 1.4
    
  • Custom repository domains

    Custom repository domains

    When trying to vendor packages like google.golang.org/api or bazil.org/fuse manul fails with timeout errors. This may be related to the use of git+ssh scheme instead of https (#8).

  • cannot find package

    cannot find package "golang_org/x/net/http2/hpack"

    ->manul -Q 2016/09/05 17:11:00 cannot find package "golang_org/x/net/http2/hpack" in any of: /usr/local/go/src/golang_org/x/net/http2/hpack (from $GOROOT) /home/tiger/go/src/golang_org/x/net/http2/hpack (from $GOPATH)

    ->go version go version go1.7 linux/amd64

  • Fail to build

    Fail to build

    I've clone your repo. checkout to branch pkg-debian

    Then try to build

    ./build.sh
    
    golang.org/x/crypto/ssh
    github.com/kovetskiy/executil
    github.com/kovetskiy/manul
    # github.com/kovetskiy/manul
    src/github.com/kovetskiy/manul/imports.go:19: undefined: build.IgnoreVendor
    src/github.com/kovetskiy/manul/submodule.go:119: undefined: build.IgnoreVendor
    

    Getting this error.

  • Do not consider folders which share a prefix to be ownPackage

    Do not consider folders which share a prefix to be ownPackage

    When you have two go packages with the same prefix in package name, for example:

    github.com/johansglock/api github.com/johansglock/api-definitions

    manul will consider api-definitions to be true for isOwnPackage which is incorrect.

  • How to resolve dependency from vendor?

    How to resolve dependency from vendor?

    I have an issue with dependency from dependent library. Let's say I need to perform testing with go test. As follow:

    go on ξ‚  master via 🐹 v1.1
    ➜ go test github.com/incubus8/go/pkg/gin
    vendor/github.com/gin-gonic/gin/binding/default_validator.go:11:2: cannot find package "gopkg.in/go-playground/validator.v8" in any of:
    	/Users/angel/go/src/github.com/incubus8/go/vendor/github.com/gin-gonic/gin/vendor/gopkg.in/go-playground/validator.v8 (vendor tree)
    	/Users/angel/go/src/github.com/incubus8/go/vendor/gopkg.in/go-playground/validator.v8
    	/usr/local/opt/go/libexec/src/gopkg.in/go-playground/validator.v8 (from $GOROOT)
    	/Users/angel/go/src/gopkg.in/go-playground/validator.v8 (from $GOPATH)
    vendor/github.com/gin-gonic/gin/render/yaml.go:10:2: cannot find package "gopkg.in/yaml.v2" in any of:
    	/Users/angel/go/src/github.com/incubus8/go/vendor/github.com/gin-gonic/gin/vendor/gopkg.in/yaml.v2 (vendor tree)
    	/Users/angel/go/src/github.com/incubus8/go/vendor/gopkg.in/yaml.v2
    	/usr/local/opt/go/libexec/src/gopkg.in/yaml.v2 (from $GOROOT)
    	/Users/angel/go/src/gopkg.in/yaml.v2 (from $GOPATH)
    go on ξ‚  master via 🐹 v1.1
    ➜ manul -I gopkg.in/yaml.v2
    2018-04-14 17:05:45 [FATAL]: unknown dependency: gopkg.in/yaml.v2
    
    go on ξ‚  master via 🐹 v1.1 took 5s
    ➜ manul -I gopkg.in/go-playground/validator.v8
    2018-04-14 17:05:52 [FATAL]: unknown dependency: gopkg.in/go-playground/validator.v8
    
    go on ξ‚  master via 🐹 v1.1 took 4s
    ➜ go test github.com/incubus8/go/pkg/gin
    vendor/github.com/gin-gonic/gin/binding/default_validator.go:11:2: cannot find package "gopkg.in/go-playground/validator.v8" in any of:
    	/Users/angel/go/src/github.com/incubus8/go/vendor/github.com/gin-gonic/gin/vendor/gopkg.in/go-playground/validator.v8 (vendor tree)
    	/Users/angel/go/src/github.com/incubus8/go/vendor/gopkg.in/go-playground/validator.v8
    	/usr/local/opt/go/libexec/src/gopkg.in/go-playground/validator.v8 (from $GOROOT)
    	/Users/angel/go/src/gopkg.in/go-playground/validator.v8 (from $GOPATH)
    vendor/github.com/gin-gonic/gin/render/yaml.go:10:2: cannot find package "gopkg.in/yaml.v2" in any of:
    	/Users/angel/go/src/github.com/incubus8/go/vendor/github.com/gin-gonic/gin/vendor/gopkg.in/yaml.v2 (vendor tree)
    	/Users/angel/go/src/github.com/incubus8/go/vendor/gopkg.in/yaml.v2
    	/usr/local/opt/go/libexec/src/gopkg.in/yaml.v2 (from $GOROOT)
    	/Users/angel/go/src/gopkg.in/yaml.v2 (from $GOPATH)
    
    

    How can I resolve that using Manul? Need help.

  • Fix

    Fix "unable to go get dependencies"

    First of all, thank you for this lib, it's awesome :)


    Let say I have GOPATH="~/go/src" And I'm working in ~/go/src/my_repo manul -Q (or -I...) will complain with: [ERROR]: unable to go get dependencies: my_repo/... Because it is trying to do go get -d my_repo/... (in ensureDependenciesExist) which obviously is not what we want. So I used the filterPackages function that exclude our own packages.

    Let me know what you think. By the way, it would be nice to have some instructions in the README.md on how to run the tests. I can't figure it out.

  • no such host

    no such host

    C:\workspace\golang\src\mymain>ver
    
    Microsoft Windows [Version 10.0.14393]
    
    C:\workspace\golang\src\mymain>manul -I github.com/gorilla/mux
    2017-09-04 19:42:36 [FATAL]: unknown dependency: github.com/gorilla/mux
    
    C:\workspace\golang\src\mymain>manul -I
    2017-09-04 19:43:35  [INFO]: adding submodule for C:/workspace/golang/src/github.com/gorilla/mux
    2017-09-04 19:43:41 [FATAL]: unable to add submodule for C:/workspace/golang/src/github.com/gorilla/mux
                                 β”œβ”€ Get https://C/workspace/golang/src/github.com/gorilla/mux?go-get=1: dial tcp: lookup C: no such host
                                 β”œβ”€ exec ["git" "submodule" "add" "-f" "git+ssh://C:/workspace/golang/src/github.com/gorilla/mux" "vendor/C:/workspace/golang/src/github.com/gorilla/mux"] error (exit status 128)
                                 └─ exec ["git" "submodule" "add" "-f" "git://C:/workspace/golang/src/github.com/gorilla/mux" "vendor/C:/workspace/golang/src/github.com/gorilla/mux"] error (exit status 128)
    
    

    
    root@me:/workspace/golang/src/mymain# uname -a
    Linux me 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux
    
    root@me:/workspace/golang/src/mymain# manul -I
    2017-09-04 19:53:17 [FATAL]: unable to list dependecies for package: mymain
                                 └─ can't finish command execution: ["go" "list" "-e" "-json" "mymain"]
                                    └─ read |0: interrupted system call
    
    
    
  • Added the local GOPATH folder as primary dependencies's source

    Added the local GOPATH folder as primary dependencies's source

    Hi, I have had problems to use Manul with beanstalkapp.com. So, I have decided to download my beanstalkapp dependencies with go get tool, and modify the submodule.go source so that it first try to import the dependencies from the local GOPATH.

    Regards, Jaume ArΓΊs

  • how to ignore the vendor directory from dependency repos?

    how to ignore the vendor directory from dependency repos?

    My main repo depens on k8s repo, both my repo and k8s depens on glog. If I don't delete the vendor directory in k8s repo, eg. vendor/k8s.io/kubernetes/vendor/, my program will run into the following error:

    ./galaxy flag redefined: log_dir
    panic: ./galaxy flag redefined: log_dir
    
    goroutine 1 [running]:
    panic(0x85c140, 0xc82024a470)
    	/usr/local/go/src/runtime/panic.go:481 +0x3e6
    flag.(*FlagSet).Var(0xc820058060, 0x7fa71593c1e8, 0xc82024a420, 0x9f2920, 0x7, 0xa90440, 0x2f)
    	/usr/local/go/src/flag/flag.go:776 +0x454
    flag.(*FlagSet).StringVar(0xc820058060, 0xc82024a420, 0x9f2920, 0x7, 0x0, 0x0, 0xa90440, 0x2f)
    	/usr/local/go/src/flag/flag.go:679 +0xc7
    flag.(*FlagSet).String(0xc820058060, 0x9f2920, 0x7, 0x0, 0x0, 0xa90440, 0x2f, 0xc82024a410)
    	/usr/local/go/src/flag/flag.go:692 +0x83
    flag.String(0x9f2920, 0x7, 0x0, 0x0, 0xa90440, 0x2f, 0x7eca7a)
    	/usr/local/go/src/flag/flag.go:699 +0x5f
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/vendor/github.com/golang/glog.init()
    	/go/src/git.code.oa.com/gaiastack/galaxy/go/src/git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/vendor/github.com/golang/glog/glog_file.go:41 +0x13e
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/pkg/util/iptables.init()
    	/go/src/git.code.oa.com/gaiastack/galaxy/go/src/git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go:108 +0x5e
    git.code.oa.com/gaiastack/galaxy/pkg/network/portmapping.init()
    	/go/src/git.code.oa.com/gaiastack/galaxy/go/src/git.code.oa.com/gaiastack/galaxy/pkg/network/portmapping/iptables.go:269 +0x63
    git.code.oa.com/gaiastack/galaxy/pkg/galaxy.init()
    	/go/src/git.code.oa.com/gaiastack/galaxy/go/src/git.code.oa.com/gaiastack/galaxy/pkg/galaxy/server.go:161 +0x9c
    main.init()
    	/go/src/git.code.oa.com/gaiastack/galaxy/go/src/git.code.oa.com/gaiastack/galaxy/cmd/galaxy/galaxy.go:27 +0x45
    

    Here is the output of compiling. glog linked twice from git.code.oa.com/gaiastack/galaxy/vendor/github.com/golang/glog and git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/vendor/github.com/golang/glog.

    Building galaxy
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/containernetworking/cni/pkg/types
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/containernetworking/cni/pkg/version
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/containernetworking/cni/pkg/invoke
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/containernetworking/cni/pkg/skel
    git.code.oa.com/gaiastack/galaxy/pkg/network/flannel
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/golang/glog
    git.code.oa.com/gaiastack/galaxy/pkg/api/cniutil
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/distribution/digest
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/distribution/reference
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/Sirupsen/logrus
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/opencontainers/runc/libcontainer/user
    git.code.oa.com/gaiastack/galaxy/vendor/golang.org/x/net/proxy
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/go-connections/sockets
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/client/transport
    git.code.oa.com/gaiastack/galaxy/vendor/golang.org/x/net/context
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/client/transport/cancellable
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/blkiodev
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/strslice
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/go-connections/nat
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/go-units
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/container
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/versions
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/filters
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/network
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/registry
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/reference
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/types/time
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/go-connections/tlsconfig
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/docker/engine-api/client
    git.code.oa.com/gaiastack/galaxy/pkg/api/docker
    git.code.oa.com/gaiastack/galaxy/pkg/api/k8s
    git.code.oa.com/gaiastack/galaxy/pkg/api/galaxy
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/vishvananda/netns
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/vishvananda/netlink/nl
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/vishvananda/netlink
    git.code.oa.com/gaiastack/galaxy/pkg/flags
    git.code.oa.com/gaiastack/galaxy/pkg/wait
    git.code.oa.com/gaiastack/galaxy/pkg/gc
    git.code.oa.com/gaiastack/galaxy/pkg/network/kernel
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/vendor/github.com/godbus/dbus
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/pkg/util/dbus
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/pkg/util/exec
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/vendor/github.com/coreos/go-semver/semver
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/vendor/github.com/golang/glog
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/pkg/util/sets
    git.code.oa.com/gaiastack/galaxy/vendor/k8s.io/kubernetes/pkg/util/iptables
    git.code.oa.com/gaiastack/galaxy/pkg/network/portmapping
    git.code.oa.com/gaiastack/galaxy/pkg/api/apiswitch
    git.code.oa.com/gaiastack/galaxy/pkg/utils/httputils
    git.code.oa.com/gaiastack/galaxy/pkg/network/remote
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/emicklei/go-restful/log
    git.code.oa.com/gaiastack/galaxy/vendor/github.com/emicklei/go-restful
    git.code.oa.com/gaiastack/galaxy/pkg/galaxy
    git.code.oa.com/gaiastack/galaxy/pkg/signal
    git.code.oa.com/gaiastack/galaxy/cmd/galaxy
    
Collection of mini-programs demonstrating Kubernetes client-go usage.

Kubernetes client-go examples Collection of mini-programs covering various client-go use cases. The intention (at least so far) is to test (more or le

Jan 3, 2023
Simple tuning work for go programs in high concurrency scenarios.

go-program-tuning Simple tuning work for go programs in high concurrency scenarios. Installation Run the following command under your project: go get

Mar 15, 2022
Reward is a Swiss Army knife CLI utility for orchestrating Docker based development environments.
Reward is a Swiss Army knife CLI utility for orchestrating Docker based development environments.

Reward Reward is a Swiss Army knife CLI utility for orchestrating Docker based development environments. It makes possible to run multiple local envir

Dec 9, 2022
Terraform utility provider for constructing bash scripts that use data from a Terraform module

Terraform Bash Provider This is a Terraform utility provider which aims to robustly generate Bash scripts which refer to data that originated in Terra

Sep 6, 2022
Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider.

dredger Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider. Dredger is made of dark magic and cannot full

Aug 25, 2022
The project aims to provide the utility for Kunlun-Cluster aka KTS

Kunlun Tool Set Description This project aims to provide the utility for Kunlun-Cluster aka 'KTS' Including but not limited to backup/restore tools...

Jul 1, 2022
crud is a cobra based CLI utility which helps in scaffolding a simple go based micro-service along with build scripts, api documentation, micro-service documentation and k8s deployment manifests

crud crud is a CLI utility which helps in scaffolding a simple go based micro-service along with build scripts, api documentation, micro-service docum

Nov 29, 2021
A very simple utility that allows you to run the desired command or script as soon as a certain process with a known PID completes correctly or with an error.

go-monkill A very simple utility that allows you to run the desired command or script as soon as a certain process with a known PID completes correctl

Dec 17, 2022
A handy utility to generate configmap and values.yaml of your application for helmifying them

Helmfig Are you tired of writing values.yaml for configmap of your project when you are helmifying them? Helmfig is a handy tool that can generate the

Dec 14, 2022
A simple webdev utility program that allows developers to quickly validate and format JSON code

Toolbox CLI A simple webdev utility program that allows developers to quickly validate and format JSON code, convert from UNIX epoch to timestamp and

Jan 4, 2022
An unofficial command line utility for Futbin

futbin An unofficial command line utility for futbin. Also, it can be used as a library. Install Pre-compiled executables Get them here. Source You ne

Dec 29, 2022
A file find utility modeled after the unix find written in Go

gofind A file find utility modeled after the unix find written in Go. Why This p

Dec 17, 2021
S3pd - CLI utility that downloads multiple s3 objects at a time, with multiple range-requests issued per object

S3 Parallel Downloader CLI utility that downloads multiple s3 objects at a time,

May 13, 2022
A small utility to generate a kubectl configuration file for all clusters you have access to in GKE.

gke-config-helper A small utility to generate a kubectl configuration file for all clusters you have access to in GKE. Usage $ gke-config-helper The b

Feb 9, 2022
A very simple, silly little kubectl plugin / utility that guesses which language an application running in a kubernetes pod was written in.

A very simple, silly little kubectl plugin / utility that guesses which language an application running in a kubernetes pod was written in.

Mar 9, 2022
Utility to make kubeseal --raw a bit easier.

ks Utility to make kubeseal --raw a bit easier. Building GOOS=windows GOARCH=amd64 go build -o ks-windows-amd64.exe ks.go GOOS=windows GOARCH=386 go b

Aug 19, 2022
Pg algorand - A Postgres DB extension with Algorand's utility functions

AlgoRand Postgres extension by AlgoNode About pg_algorand A set of utility funct

Feb 17, 2022
Sapfun - Utility that takes control over your video card coolers to keep it cool and steady

What? sapfun - Utility that takes control over your video card coolers to keep i

Feb 18, 2022
Using the Golang search the Marvel Characters. This project is a web based golang application that shows the information of superheroes using Marvel api.
Using the Golang search the Marvel Characters. This project is a web based golang application that shows the information of superheroes using Marvel api.

marvel-universe-web using the Golang search the Marvel Universe Characters About The Project This project is a web based golang application that shows

Oct 10, 2021