diff options
Diffstat (limited to 'bin/compile')
-rwxr-xr-x | bin/compile | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/bin/compile b/bin/compile new file mode 100755 index 0000000..e9936ee --- /dev/null +++ b/bin/compile @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby + +require 'fileutils' + +# This will set the ROOT_PATH variable +require_relative '../lib/gitlab_init' + +GO_DIR = 'go' +GOPATH = File.join(ROOT_PATH, 'go_build') +GO_PACKAGE = File.join('gitlab.com/gitlab-org/gitlab-shell', GO_DIR) + +def main + FileUtils.rm_rf(GOPATH) + build_source_dir = File.join(GOPATH, 'src', GO_PACKAGE) + FileUtils.mkdir_p(build_source_dir) + FileUtils.cp_r(File.join(ROOT_PATH, GO_DIR, '.'), build_source_dir) + env = { + 'GOPATH' => GOPATH, + 'GO15VENDOREXPERIMENT' => '1', + } + run!(env, %W[go install #{GO_PACKAGE}/cmd/...]) + executables = Dir[File.join(GOPATH, 'bin', '*')] + FileUtils.chmod(0755, executables) + FileUtils.cp(executables, File.join(ROOT_PATH, 'bin')) +end + +def run!(env, cmd) + raise "env must be a hash" unless env.is_a?(Hash) + raise "cmd must be an array" unless cmd.is_a?(Array) + + if !system(env, *cmd) + abort "command failed: #{env.inspect} #{cmd.join(' ')}" + end +end + +main |