From bcff3f3bb431c013000c83b6fce8f228429cf0d8 Mon Sep 17 00:00:00 2001 From: "Jacob Vosmaer (GitLab)" Date: Tue, 24 Jul 2018 13:17:52 +0000 Subject: Add script to update vendored go libs --- go/README.md | 12 ++++++++++++ support/go-update-vendor | 26 ++++++++++++++++++++++++++ support/go_build.rb | 4 ++-- 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100755 support/go-update-vendor diff --git a/go/README.md b/go/README.md index dfaa0da..6bbc03e 100644 --- a/go/README.md +++ b/go/README.md @@ -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 code in `package main` under `cmd/foobar`. This will automatically get 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 +``` diff --git a/support/go-update-vendor b/support/go-update-vendor new file mode 100755 index 0000000..020bb87 --- /dev/null +++ b/support/go-update-vendor @@ -0,0 +1,26 @@ +#!/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) diff --git a/support/go_build.rb b/support/go_build.rb index 30a6b71..792ebc0 100644 --- a/support/go_build.rb +++ b/support/go_build.rb @@ -22,11 +22,11 @@ module GoBuild FileUtils.cp_r(File.join(ROOT_PATH, GO_DIR, '.'), build_source_dir) end - def run!(env, cmd) + def run!(env, cmd, options = {}) raise "env must be a hash" unless env.is_a?(Hash) 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(' ')}" end end -- cgit v1.2.1