Commit bcff3f3b authored by Jacob Vosmaer (GitLab)'s avatar Jacob Vosmaer (GitLab) Committed by Rémy Coutable

Add script to update vendored go libs

parent f59cd678
...@@ -4,3 +4,15 @@ This directory contains Go executables for use in gitlab-shell. To add ...@@ -4,3 +4,15 @@ This directory contains Go executables for use in gitlab-shell. To add
a new command `foobar` create a subdirectory `cmd/foobar` and put your a new command `foobar` create a subdirectory `cmd/foobar` and put your
code in `package main` under `cmd/foobar`. This will automatically get code in `package main` under `cmd/foobar`. This will automatically get
compiled into `bin/foobar` by `../bin/compile`. compiled into `bin/foobar` by `../bin/compile`.
## Vendoring
We use vendoring in order to include third-party Go libraries. This
project uses [govendor](https://github.com/kardianos/govendor).
To update e.g. `gitaly-proto` run the following command in the root
directory of the project.
```
support/go-update-vendor gitlab.com/gitlab-org/gitaly-proto/go@v0.109.0
```
#!/usr/bin/env ruby
require 'fileutils'
require_relative 'go_build'
include GoBuild
def main(dependency)
# Govendor wants to run in a GOPATH so let's make one for it.
create_fresh_build_dir
run!(GO_ENV, %w[go get github.com/kardianos/govendor])
gitlab_shell_build_go_dir = File.join(BUILD_DIR, 'src', GO_PACKAGE)
run!(GO_ENV, %W[govendor fetch #{dependency}], chdir: gitlab_shell_build_go_dir)
# Now we have updated go/vendor in the temporary build dir. We must sync
# the changes back so that Git will see them.
FileUtils.rm_rf('go/vendor')
FileUtils.cp_r(File.join(gitlab_shell_build_go_dir, 'vendor'), 'go')
end
unless ARGV.count == 1
abort "usage: #{$PROGRAM_NAME} DEPENDENCY"
end
main(ARGV.first)
...@@ -22,11 +22,11 @@ module GoBuild ...@@ -22,11 +22,11 @@ module GoBuild
FileUtils.cp_r(File.join(ROOT_PATH, GO_DIR, '.'), build_source_dir) FileUtils.cp_r(File.join(ROOT_PATH, GO_DIR, '.'), build_source_dir)
end end
def run!(env, cmd) def run!(env, cmd, options = {})
raise "env must be a hash" unless env.is_a?(Hash) raise "env must be a hash" unless env.is_a?(Hash)
raise "cmd must be an array" unless cmd.is_a?(Array) raise "cmd must be an array" unless cmd.is_a?(Array)
unless system(env, *cmd) unless system(env, *cmd, options)
abort "command failed: #{env.inspect} #{cmd.join(' ')}" abort "command failed: #{env.inspect} #{cmd.join(' ')}"
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment